我一直在寻找一种简单的方法来从寄存器中以十进制格式打印一个整数(英特尔8086,如果有任何意义),并找到了完美的东西。问题是,我无法理解其运作方式。因此,存储在AX中的整数的代码是:
or AX,'00'
mov AH,02h
mov DL,AL
int 21H
当然我知道最后三行的目的,但这里的OR操作涉及什么样的魔法,以便将存储在二进制形式中的数字更改为存储在AL中的可打印ASCII字符?
答案 0 :(得分:3)
字符'0'为0x30,0x30 | 5为0x35 ... ascii为'5'。你可以使用加法,但大概or
是一个更便宜的指令。
答案 1 :(得分:3)
字符'0'的ASCII码是48,即00110000。 通过对数字0到9(即0000到1001)进行OR运算, 你得到AL中相应字符(00110000到00111001)的ASCII码。