所以说我在寄存器中有这个值ebx:30303420
我想转换它并打印出相应的ascii值。所以它应该打印出来
004
30 == 0
30 == 0
34 == 4
20 == space character.
如何在屏幕上打印?
这是80x86架构,使用汇编代码。
答案 0 :(得分:1)
嗯,你的问题有一些不清楚的细节。
1-如果你在ebx中有30303420十六进制值,那么你有4个Ascii字符,恰好是“004”,即:
mov ebx,30303420H ;is exactly the same than:
mov ebx,"004 "
你没有任何小数值(哪一个?),所以这里没有任何转换。
2-如果要在屏幕中显示该ebx值,因此显示“004”,则必须指定程序将在哪个操作系统下运行才能使用适当的服务。例如,如果你想使用旧式的MS-DOS INT 21H函数,它也可以在Windows的DOS窗口中运行,那么这段就可以了:
mov cx,4 ;counter = 4 characters
;
next:
rol ebx,8 ;rotate left EBX 1 byte: place next char in BL
mov dl,bl ;DL = char to show
mov ah,2 ;AH = VIDEO OUTPUT function
int 21H ;DOS kernel service Int: show the char
loop next ;repeat 4 times
但是,如果您的程序在Linux下运行,则显示ebx值的方法完全不同。此外,您的程序可能以不同的方式使用C库函数,或者是Windows兼容的程序,或使用BIOS INT 10H服务(负责屏幕),甚至直接访问视频电路等,等等...