巫师3高等剑油:请用汇编完成
来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 06:54:00
要求末位对齐,如果输入的加数和被加数的最高位是0.自动抹去,输入加数和被加数的位数不受限制,要求用宏定义,伪指令,子程序,键盘输入,屏幕输出等指令.
例如,运行程序后键盘输入为:
0987
235
屏幕输出应为:
987
235
1222
屏幕输出是错的,这是知道的问题 后面要对齐
SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT
DATA1 DB 255
DB 0
DB 255 DUP(0)
DATA2 DB 255
DB 0
DB 255 DUP(0)
DATA3 DB 255 DUP(0)
DATA4 DB 255 DUP(0)
LEN1 DW 0
LEN2 DW 0
LEN DW 0
DATA5 DB 255 DUP(0)
STR DB 0AH,0DH,'$'
SPACE DB 20H,'$'
JINWEI DB 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET DATA1
MOV AH,0AH
INT 21H
CALL HuiChe_HuanHang
MOV DX,OFFSET DATA2
MOV AH,0AH
INT 21H
CALL HuiChe_HuanHang
MOV CL,DATA1[1]
MOV CH,0
MOV BX,CX
MOV DI,0
MOV SI,1
L0: INC SI
DEC CX
MOV AL,DATA1[SI]
CMP AL,'0'
JE L0
INC CX
ADD BX,2
SUB BX,SI
MOV LEN1,BX
L01: MOV AL,DATA1[SI]
SUB AL,'0'
MOV DATA3[DI],AL
INC SI
INC DI
LOOP L01
MOV CL,DATA2[1]
MOV CH,0
MOV BX,CX
MOV DI,0
MOV SI,1
L1: INC SI
DEC CX
MOV AL,DATA2[SI]
CMP AL,'0'
JE L1
INC CX
ADD BX,2
SUB BX,SI
MOV LEN2,BX
L10: MOV AL,DATA2[SI]
SUB AL,'0'
MOV DATA4[DI],AL
INC SI
INC DI
LOOP L10
MOV SI,LEN1
MOV DI,LEN2
CMP SI,DI
JAE L2
MOV AX,DI
ADD AX,1
MOV LEN,AX
JMP L3
L2: MOV AX,SI
ADD AX,1
MOV LEN,AX
L3: MOV BX,LEN
MOV AL,DATA3[SI-1]
ADD AL,DATA4[DI-1]
DAA
MOV AH,AL
AND AH,0F0H
JZ L31
MOV JINWEI,1
AND AL,0FH
L31: MOV DATA5[BX-1],AL
CMP SI,1
JE L5
CMP DI,1
JE L6
L4: DEC SI
DEC DI
DEC BX
MOV AL,DATA3[SI-1]
ADD AL,JINWEI
ADD AL,DATA4[DI-1]
DAA
MOV JINWEI,0
MOV AH,AL
AND AH,0F0H
JZ L41
MOV JINWEI,1
AND AL,0FH
L41: MOV DATA5[BX-1],AL
CMP SI,1
JE L5
CMP DI,1
JE L6
JMP L4
L5: CMP DI,1
JE L7
L51: DEC DI
DEC BX
MOV AL,DATA4[DI-1]
ADD AL,JINWEI
DAA
MOV JINWEI,0
MOV AH,AL
AND AH,0F0H
JZ L52
MOV JINWEI,1
AND AL,0FH
L52: MOV DATA5[BX-1],AL
CMP DI,1
JE L7
JMP L51
L6: CMP SI,1
JE L7
L61: DEC SI
DEC BX
MOV AL,DATA3[SI-1]
ADD AL,JINWEI
DAA
MOV JINWEI,0
MOV AH,AL
AND AH,0F0H
JZ L62
MOV JINWEI,1
AND AL,0FH
L62: MOV DATA5[BX-1],AL
CMP SI,1
JE L7
JMP L61
L7: MOV AL,JINWEI
ADD DATA5[0],AL
L8: MOV SI,LEN1
MOV DI,LEN2
MOV BX,LEN
MOV DATA5[BX],'$'
MOV DATA3[SI],'$'
MOV DATA4[DI],'$'
CALL HuiChe_HuanHang
L9: ADD DATA5[BX-1],'0'
DEC BX
JNZ L9
L91: ADD DATA3[SI-1],'0'
DEC SI
JNZ L91
L92: ADD DATA4[DI-1],'0'
DEC DI
JNZ L92
MOV AL,DATA5[0]
CMP AL,'0'
JNE LAA
MOV SI,1
SUB LEN,1
JMP LAB
LAA: MOV SI,0
LAB: MOV CX,LEN
SUB CX,LEN1
CALL SPP
MOV DX,OFFSET DATA3
MOV AH,09H
INT 21H
CALL HuiChe_HuanHang
MOV CX,LEN
SUB CX,LEN2
CALL SPP
MOV DX,OFFSET DATA4
MOV AH,09H
INT 21H
CALL HuiChe_HuanHang
CMP SI,1
JE LLLL
MOV DX,OFFSET DATA5
MOV AH,09H
INT 21H
JMP DONE
LLLL: MOV DX,OFFSET DATA5+1
MOV AH,09H
INT 21H
JMP DONE
SPP PROC NEAR ;输出空格子程序
CMP CX,0
JZ DD10
LPP: MOV DX,OFFSET SPACE
MOV AH,09H
INT 21H
DEC CX
JNZ LPP
DD10: RET
SPP ENDP
HuiChe_HuanHang PROC NEAR ;回车换行子程序
MOV DX,OFFSET STR
MOV AH,09H
INT 21H
RET
HuiChe_HuanHang ENDP
DONE: MOV AH,4CH
INT 21H
CSEG ENDS
END START
自己做吧,这样好像不太好~~~