Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在x86汇编中以视频模式13h显示整数?_Assembly_X86_Dos_Masm_X86 16 - Fatal编程技术网

Assembly 如何在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

我目前正在为x86汇编的学校做一个项目。我们正在编写复古游戏突破

我们在视频模式下渲染游戏13h。问题是我们想在屏幕上显示球员的当前得分。 这是一个将以$结尾的字符串打印到屏幕的过程:

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中的无符号值转换为十进制字符串的函数,可在此处找到: