编制一个无缺的程序,将一字节紧缩BCD码改换为两个ASCII码,并将作用寄存在ASC和ASC+1单元,按高位存低地址、低位存高地址的格局寄存。
一字节紧缩BCD码是两位0~9的数字,4位二进制数对应一位BCD码。所以要害是要将两个4位二进制数分脱离来。“别离”能够用移位指令和逻辑运算指令来完毕,然后用加30H的加法,便能够得到相应的ASCII码。
程序清单:
DATA SEGMENT
BCD DB 98H
ASC DB ?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CL,4
MOV AL,BCD ;将BCD码寄存到AL和BL
MOV BL,AL
SHR AL,CL ;右移4位,高4位移到低4位
ADD AL,30H ;得到高位的ASCII码
MOV ASC,AL
AND BL,0FH ;狷介4位
ADD BL,30H ;得到低位的ASCII码
MOV ASC+1,BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
此程序经汇编后对应的列表文件
右移4位恰当于除以16,所以也可用除法指令完毕。程序段为:
MOV AL,BCD
MOV BL,16
XOR AH,AH ;拓宽到16位
DIV BL ;商在AL,余数在AH
ADD AL,30H ;高位的ASCII码
MOV ASC,AL
ADD AH,30H ;低位的ASCII码
MOV ASC+1,AH