怎样用汇编语言编程将30H单元的两位BCD码拆成相应的ASCII,存入31H,32H单元中?

2025-02-24 22:25:19
推荐回答(3个)
回答1:

MOV A, 30H ; 取数据,如56H
ANL A, #0FH ; 获得低位06H
ORL A, #30H ; 高位变3,成36H,即ASCII码
MOV 31H, A ; 存入指定单元

MOV A, 30H ; 取数据,如56H
SWAP A ; 高低字节交换,变65H
ANL A, #0FH ; 获得低位05H
ORL A, #30H ; 高位变3,成35H,即ASCII码
MOV 32H, A ; 存入指定单元

回答2:

mov al,[30h]
mov [31h],al ;取数并放在31h单元
mov cl,4
shr byte ptr[31h],cl ;将31h单元的字节数据右移四位。把高位bcd码移到低位上,高四位为0
or byte ptr[31h],30h ;和30h相与,将bcd码转换成ascii码

mov [32h],al ;将原数存放在32h单元
and byte ptr[32h],0fh ;高四位清零,保留第四位
or byte ptr[32h],30h ;和30h相与,将bcd码转换成ascii码

这样运行之后,31h存放的是高位bcd码对应十进制数的ascii码,32h存放的是低位ascii码

回答3:

mov ax,30h
mov bx,ax
and bx,0ff00h
and ax,00ffh
mov si,31h
add bh,30h
mov [si],bh
inc si
add al,30h
mov [si],al