1
您好我目前正在编写一个程序,我需要在屏幕上打印寄存器AX
的值。我想到的方法很少,但他们没有奏效。任何想法如何使它?例如ax
= 0abcdh。寄存器,组件的打印值x8086
您好我目前正在编写一个程序,我需要在屏幕上打印寄存器AX
的值。我想到的方法很少,但他们没有奏效。任何想法如何使它?例如ax
= 0abcdh。寄存器,组件的打印值x8086
您必须将寄存器的值分成不同的部分。
示例:十六进制输出:
MOV CX, 4
next_digit:
PUSH CX
MOV CL, 4
ROL AX, CL
PUSH AX
AND AL, 0Fh
ADD AL, '0'
CMP AL, '9'
JLE not_a_letter
ADD AL, 'A'-'9'-1
not_a_letter:
; Now write the character AL to the screen
POP AX
POP CX
LOOP next_digit
该代码会破坏CX寄存器的内容,所以你必须将它保存在栈上,如果你不希望修改CX寄存器。
行“现在将字符AL写入屏幕”取决于操作系统。
如果你想要十进制输出它有点棘手。你必须使用DIV指令并除以10.你会得到从右到左的数字!
请提一下您尝试过的是什么以及您的错误是什么。 –
转换为十六进制字符串,将其打印出来。有什么问题?你的尝试在哪里? – Devolus