河北工业大学汇编语言程序设计实验三
3-1
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
X1 DW 3 DUP (0)
X2 DW 3 DUP (0)
X DW 0
Y DW 0
RE DW 3 DUP (0)
STR1 DB 'X1 + X2 = $'
STR2 DB 13,10,'X1 - X2 = $'
STR3 DB '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
SETX1:
MOV DI,OFFSET X1
MOV BX,0
MOV [BX+DI],0FABCH
ADD BX,2
MOV [BX+DI],0FCCCH
ADD BX,2
MOV [BX+DI],0ABC0H
SETX2:
MOV DI,OFFSET X2
MOV BX,0
MOV [BX+DI],0F000H
ADD BX,2
MOV [BX+DI],0F000H
ADD BX,2
MOV [BX+DI],0AAAH
JIAFA:
MOV DI,OFFSET X1
MOV BX,0
MOV AX,[BX+DI]
MOV DI,OFFSET X2
MOV CX,[BX+DI]
ADD AX,CX
MOV DX,0
ADC DX,0
MOV DI,OFFSET RE
MOV [BX+DI],AX
ADD BX,2
MOV DI,OFFSET X1
MOV AX,[BX+DI]
MOV DI,OFFSET X2
MOV CX,[BX+DI]
ADD AX,DX
ADC DX,0
ADD AX,CX
MOV DX,0
ADC DX,0
MOV DI,OFFSET RE
MOV [BX+DI],AX
ADD BX,2
MOV DI,OFFSET X1
MOV AX,[BX+DI]
MOV DI,OFFSET X2
MOV CX,[BX+DI]
ADD AX,DX
ADD AX,CX
MOV DX,0
ADC DX,0
MOV DI,OFFSET RE
MOV [BX+DI],AX
SHUCHU:
MOV DX,OFFSET STR1
MOV AH,09H
INT 21H
MOV CX,4
MOV AX,RE+4
SHUCHU1: ;输出高四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU1
MOV CX,4
MOV AX,RE+2
SHUCHU2: ;输出中四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU2
MOV CX,4
MOV AX,RE
SHUCHU3: ;输出低四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU3
MOV DL,'H'
MOV AH,02H
INT 21H
JIANFA:
MOV DI,OFFSET X1
MOV AX,[DI]
MOV BX,[DI+2]
MOV CX,[DI+4]
MOV DI,OFFSET X2
MOV DX,[DI]
SUB AX,DX
SBB BX,0
SBB CX,0
MOV DI,OFFSET RE
MOV [DI],AX
MOV DI,OFFSET X2
MOV DX,[DI+2]
SUB BX,DX
SBB CX,0
MOV DI,OFFSET RE
MOV [DI+2],BX
MOV DI,OFFSET X2
MOV DX,[DI+4]
SUB CX,DX
MOV DI,OFFSET RE
MOV [DI+4],CX
SHUCHU4:
MOV DX,OFFSET STR2
MOV AH,09H
INT 21H
MOV CX,4
MOV AX,RE+4
SHUCHU5: ;输出高四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU5
MOV CX,4
MOV AX,RE+2
SHUCHU6: ;输出低四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU6
MOV CX,4
MOV AX,RE
SHUCHU7: ;输出低四位
MOV X,CX
MOV CL,4
ROL AX,CL
MOV Y,AX
AND AX,0000000000001111B
MOV BX,AX
MOV DI,OFFSET STR3
MOV DL,[BX+DI]
MOV AH,02H
INT 21H
MOV AX,Y
MOV CX,X
LOOP SHUCHU7
MOV DL,'H'
MOV AH,02H
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
3-3
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
X DW 0
Y DW 0
SHU1 DW 0
SHU2 DW 0
HE DW 0
CHA DW 0
JI DW 2 DUP (?)
SHAN DW 2 DUP (?)
STR1 DB 'Please Enter The Frist Number:$'
STR2 DB 13,10,'Please Enter The Second Number:$'
STR3 DB '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
STR4 DB 13,10,'X1 + X2 = $'
STR5 DB 13,10,'X1 - X2 = $'
STR6 DB 13,10,'X1 * X2 = $'
STR7 DB 13,10,'X1 / X2 = $'
STR8 DB '......$'
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
SHURU1:
MOV DX,OFFSET STR1
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AX,130H
MOV BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV SHU1,BX
SHURU2:
MOV DX,OFFSET STR2
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AX,130H
MOV BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV AX,0AH
MUL BX
MOV BX,AX
MOV AH,01H
INT 21H
SUB AX,130H
ADD BX,AX
MOV SHU2,BX
JIAFA:
MOV AX,SHU1
MOV BX,SHU2
ADD AX,BX
MOV HE,AX
JIANFA:
MOV AX,SHU1
MOV BX,SHU2
SUB AX,BX
MOV CHA,AX
CHENGFA:
MOV AX,SHU1
MOV BX,SHU2
MOV DX,0
MUL BX
MOV JI+2,DX
MOV JI,AX
CHUFA:
MOV DX,0
MOV AX,SHU1
MOV BX,SHU2
DIV BX
MOV SHAN,AX
MOV SHAN+2,DX
SHUCHU1: ;输出加法结果
MOV DX,OFFSET STR4
MOV AH,09H
INT 21H
MOV AX,HE
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
SHUCHU2: ;输出减法结果
MOV DX,OFFSET STR5
MOV AH,09H
INT 21H
MOV AX,CHA
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
;输出乘法结果,输出前的准备
SHUCHU3: ;输出乘法结果
MOV DX,OFFSET STR6
MOV AH,09H
INT 21H
MOV AX,JI+2
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV AX,JI
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
SHUCHU4:
MOV DX,OFFSET STR7
MOV AX,09H
INT 21H
MOV AX,SHAN
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,OFFSET STR8
MOV AX,09H
INT 21H
MOV AX,SHAN+2
MOV DX,0
MOV BX,1000
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,100
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,10
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
MOV DX,0
MOV BX,1
MOV AX,CX
DIV BX
ADD AX,30H
MOV CX,DX
MOV DX,0
MOV DX,AX
MOV AH,02H
INT 21H
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START