Assembly 如何在x86汇编中以视频模式13h显示整数?
我目前正在为x86汇编的学校做一个项目。我们正在编写复古游戏突破 我们在视频模式下渲染游戏13h。问题是我们想在屏幕上显示球员的当前得分。 这是一个将以$结尾的字符串打印到屏幕的过程:Assembly 如何在x86汇编中以视频模式13h显示整数?,assembly,x86,dos,masm,x86-16,Assembly,X86,Dos,Masm,X86 16,我目前正在为x86汇编的学校做一个项目。我们正在编写复古游戏突破 我们在视频模式下渲染游戏13h。问题是我们想在屏幕上显示球员的当前得分。 这是一个将以$结尾的字符串打印到屏幕的过程: PROC displayString ARG @@row:DWORD, @@column:DWORD, @@offset:DWORD USES EAX, EBX, EDX MOV EDX, [@@row] ; row in EDX MOV EBX, [@@column] ; col
PROC displayString
ARG @@row:DWORD, @@column:DWORD, @@offset:DWORD
USES EAX, EBX, EDX
MOV EDX, [@@row] ; row in EDX
MOV EBX, [@@column] ; column in EBX
MOV AH, 02H ; set cursor position
SHL EDX, 08H ; row in DH (00H is top)
MOV DL, BL ; column in DL (00H is left)
MOV BH, 0 ; page number in BH
INT 10H ; raise interrupt
MOV AH, 09H ; write string to standard output
MOV EDX, [@@offset] ; offset of '$'-terminated string in EDX
INT 21H ; raise interrupt
RET
ENDP displayString
问题是,我找不到一种可靠的方法将整数转换成以美元结尾的字符串,这样这个过程就可以在屏幕上打印它
有人能就如何将值转换为以美元结尾的字符串提供建议吗?您必须编写自己的代码才能将值和整数转换为ASCII。您可以重复将一个值除以10,得到每个数字(按相反顺序),然后将这些数字存储到字符串中。感谢您的回复!这是我的第一个想法。问题在于将这些数字组合成一个字符串,然后甚至添加13、10和$符号以使其终止。为什么在打印分数时需要在字符串中添加回车符和换行符?包括一个答案,该答案不将int->string放入缓冲区,并为int 21h/AH=9A MASM/TASM版本附加一个
$
,该版本带有一个单独的用于打印EOL的函数,以及一个将AX中的无符号值转换为十进制字符串的函数,可在此处找到: