汇编:编写一个将16位二进制数转化成BCD码的程序,要求注释。

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:00:16

;入口参数
; AX:16位二进制码
; DI:为BCD码准备的单元的首地址
;出口参数
; NONE
BIN2BCD PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI ;现场保护
MOV CX,3 ;16位二进制码转换成压缩BCD码最多需要3个字节
RE: SUB DX,DX ;dx清零
DIV WORD PTR 0AH ;AX除于10,商可能越界,所以DX-AX连用,故将0AH转换为字
MOV BL,DL ;将余数保存,因为DL==DX
SUB DX,DX ;dx清零
DIV WORD PTR 0AH ;同上
SHL DL,4 ;抬到高位
OR BL,DL ;压缩BCD码
MOV [DI],BL ;保存压缩的BCD码
INC DI ;准备保存下一个
DEC CX ;计数
JNE RE ;重复
POP DI ;现场恢复
POP DX
POP CX
POP BX
POP AX
RET
BIN2BCD ENDP

用8086的汇编语言?