我正在尝试理解这个汇编程序,它应该将两位数的解压缩BCD编号转换为:
1)ASCII等价物
2)BCD等效包装
;Unpacked BCD to ASCII & Packed BCD
.model small
.data
msg db 10,13,'Two ASCII Digits are '
asci1 db 30h,' and '
asci2 db 30h, '$'
.code segment
start:
mov ax, @data ;Initializing data Segment register
mov ds, ax
mov al, 2 ;1st Unpacked BCD number
mov bl, 4 ;2nd Unpacked BCD number
add asci1, al ;equivalent ascii
add asci2, bl
mov bh, al ;1st Unpacked bcd to bh
mov cl, 4 ;to shift lower 4 bits to higher
shl bh, cl
or bh, bl ;Combine to get packed bcd in bh
lea dx, msg
;Display All
mov ah, 9
int 21h
mov ah, 4ch ; exit to operating system.
int 21h
end start ; stop the assembler.
我特别不明白数据段中的三行特别是数字10,13,30h是什么意思。
我也不明白代码部分特别是msg
如何将第一行与数字以及它们之间的单词“和”结合起来。
i; e该程序的输出是:
The ASCII digits are 2 and 4
我理解显示和退出操作系统的最后一段代码。
请解释为什么以及如何执行该程序。