无法理解用于基本转换的OR

时间:2013-12-09 00:24:36

标签: assembly x86-16

我一直在寻找一种简单的方法来从寄存器中以十进制格式打印一个整数(英特尔8086,如果有任何意义),并找到了完美的东西。问题是,我无法理解其运作方式。因此,存储在AX中的整数的代码是:

or AX,'00'

mov AH,02h
mov DL,AL
int 21H 

当然我知道最后三行的目的,但这里的OR操作涉及什么样的魔法,以便将存储在二进制形式中的数字更改为存储在AL中的可打印ASCII字符?

2 个答案:

答案 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码。