第3个回答 2019-06-01
以下程序将10个两位压缩bcd数转化为二进制数,并和给出的结果进行比较。供参考:
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START:
JMP BB
SR DB 31H,32H,61H,41H,42H,03H,77H,81H,93H,55H
DE DB 1FH,20H,3DH,29H,2AH,03H,4DH,51H,5DH,37H
RE DB 10 DUP(0)
; sr即source(存放压缩bcd数),re即result
; 你给出的比对结果存入de中,在程序的后半部分进行比对
; 程序在tasm中调试通过
X DB 0
MSG DB 'equal',10,13,'$'
BB: PUSH CS
POP DS
PUSH CS
POP ES
LEA SI,SR
LEA DI,RE
MOV CX,10
AGAIN1:
MOV AL,BYTE PTR[SI]
MOV X,AL
ROL X,4 ; 在masm中 应将本行变成4行 rol x,1
MOV AL,X
AND AL,0FH
MOV AH,0
MOV BL,10
MUL BL
ROL X,4 ; 在masm中 应将本行变成4行 rol x,1
MOV BL,X
AND BL,0FH
ADD AL,BL
MOV BYTE PTR[DI],AL
INC SI
INC DI
LOOP AGAIN1
MOV CX,10
LEA SI,RE
LEA DI,DE
AGAIN2:
MOV AL,[SI]
CMP AL,[DI]
JNE AGAIN3
LEA DX,MSG
MOV AH,9
INT 21H
LOOP AGAIN2
AGAIN3:
MOV AH,4CH
INT 21H
CODE ENDS
END START