文档库 最新最全的文档下载
当前位置:文档库 › 汇编四位BCD码减法

汇编四位BCD码减法

.MODEL TINY
EXTRN Display8:NEAR, GetBCDKey:NEAR
EXTRN F1:BYTE
.STACK 100
.DATA
BUFFER DB 8 DUP(?)
minuend DW 1 DUP(?) ;被减数
subtrahend DW 1 DUP(?) ;减数
.CODE
START: MOV AX,@DATA
MOV DS,AX
MOV ES,AX
NOP
MOV F1,0 ;先清除显示,再接收键输入
START1: LEA DI,minuend
MOV CX,4 ;按键次数
CALL GetBCDKey ;得到双字节十进制数(被减数)
MOV F1,1 ;接收到第一个键,才清除显示
LEA DI,subtrahend
MOV CX,4 ;按键次数
CALL GetBCDKey ;得到双字节十进制数(减数)
MOV AX,minuend
MOV BX,subtrahend
MOV DL,10H
CMP AX,BX
JNB START2
XCHG AX,BX
MOV DL,11H ;负数
START2: SUB AL,BL ;低位
DAS
XCHG AL,AH
SBB AL,BH ;高位
DAS
XCHG AL,AH
CLD
LEA DI,BUFFER ;存放显示结果
CALL B1toB2 ;低位
MOV AL,AH
CALL B1toB2 ;高位
MOV AL,10H ;最高三位消隐
STOSB
STOSB
STOSB
STOSB
LEA SI,BUFFER+3
MOV CX,3
CALL BlackDisplay ;将高位0消隐
LEA SI,BUFFER
CALL Display8
JMP START1
;将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2 PROC NEAR
PUSH AX
AND AL,0FH
STOSB
POP AX
AND AL,0F0H
ROR AL,4
STOSB
RET
B1toB2 ENDP
BlackDisplay PROC NEAR ;将高位0消隐
BlackDisplay1: MOV AL,[SI]
CMP AL,0
JNZ Exit
MOV AL,10H
MOV [SI],AL
DEC SI
LOOP BlackDisplay1
Exit: CLD
MOV [SI+1],DL
RET
BlackDisplay ENDP

END START

相关文档
相关文档 最新文档