这段汇编程序怎么改呀

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:18:53
DATA SEGMENT
A DB 12H
B DB 22H
D1 DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
ADD AL,B
MOV D1,AL
XS1:AND AL,0F0H
MOV CL,04
ROR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02
INT 21H
XS2:MOV AL,D1
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,02
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

以上这段程序在求12H+22H没有问题,但是求1234H+9876H就出现错误,请问应该如何修改(在原有的基础上喔)!可以的话把可以运行的源程序PO上来,不胜感激,急用啊!
弄不成功耶,帮我改一下呀.

DATA SEGMENT
A DW 1234H
B DW 9876H
D1 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,A
ADD BX,B
MOV D1,BX
MOV CH,4
XS1:
MOV CL,04
ROl BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JL NEXT
ADD DL,7
NEXT:
MOV AH,02
INT 21H
DEC CH
JNZ XS1
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

A DB 12H
B DB 22H

DB只是表示8位而已,你要表示大的数值要用DW,这个表示WORD,16位的

当然,下面的
MOV AL,A
ADD AL,B
之类的全部要换成16位寄存器
例如变成
mov ax,A
add ax,B

……
……