?? jiajia.asm
字號:
DATA SEGMENT
STR1 DB 'put the number1:$'
STR2 DB 'put the number2:$'
STR3 DB ' the result :$'
STR4 DB ' { addition } $'
STR5 DB '"Ctrl+c" out of the program$'
STR6 DB 'put "q" at the end of the number$'
NUMBER1 DB '0','0',254 DUP(?)
NUMBER2 DB '0','0',254 DUP(?)
NUMBER3 DB 256 DUP(?)
NUMBER4 DB 256 DUP(?)
DATA ENDS
;**********************************
EXTRA SEGMENT
EXTRA ENDS
;***********************************
STACK SEGMENT STACK
DW 50 DUP(?)
TOS LABEL WORD
STACK ENDS
;***********************************
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOS
MOV AX,0002H
INT 10H
MOV AH,09H
MOV DX,OFFSET STR4
INT 21H
MOV AH,03H
INT 10H
INC DH
MOV DL,0
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET STR5
INT 21H
MOV AH,03H
INT 10H
INC DH
MOV DL,0
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET STR6
INT 21H
SSS:
MOV AH,03H
INT 10H
INC DH
MOV DL,0
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET STR1
INT 21H
number=number1
MOV SI,2
AGAIN1:
MOV AH,01H
INT 21H
CMP AL,'q'
JE WRITEOVER1
CMP AL,'0'
JL AGAIN1
CMP AL,'9'
JG AGAIN1
MOV NUMBER[SI],AL
INC SI
JMP AGAIN1
WRITEOVER1:
MOV NUMBER[SI],'$'
PUSH SI
MOV AH,03H
INT 10H
INC DH
MOV DL,0
MOV AH,02H
INT 10H
MOV AH,09H
MOV DX,OFFSET STR2
INT 21H
number=number2
MOV SI,2
AGAIN2:
MOV AH,01H
INT 21H
CMP AL,'q'
JE WRITEOVER2
CMP AL,'0'
JL AGAIN2
CMP AL,'9'
JG AGAIN2
MOV NUMBER[SI],AL
INC SI
JMP AGAIN2
WRITEOVER2:
MOV NUMBER[SI],'$'
PUSH SI
MOV AH,03H
INT 10H
INC DH
MOV DL,0
MOV AH,02H
INT 10H
MOV CL,1
MOV BX,0
POP SI
POP DI
MOV AX,0
PUSH AX
L0:
POP AX
DEC DI
CMP DI,-1
JE OT1
MOV AL,NUMBER1[DI]
DEC SI
CMP SI,-1
JE H
MOV DL,NUMBER2[SI]
JMP I
H:
MOV DL,0
INC SI
I:
AND AL,0FH
AND DL,0FH
ADD DL,AL
MOV CL,1
MOV AL,0
SHR DL,CL
JNC L1
ADD AL,1
L1:
SHR DL,CL
JNC L2
ADD AL,2
L2:
SHR DL,CL
JNC L3
ADD AL,4
L3:
SHR DL,CL
JNC L4
ADD AL,8
L4:
SHR DL,CL
JNC L5
ADD AL,16
L5:
ADD AL,AH
CMP AL,10
JB L6
SUB AL,10
MOV AH,1
JMP L7
L6:
MOV AH,0
L7: PUSH AX
ADD AL,30H
MOV NUMBER3[BX],AL
INC BX
JMP L0
;*******************************************
OT1:
PUSH AX
L01:
POP AX
MOV AL,0
DEC SI
CMP SI,-1
JE OV
MOV DL,NUMBER2[SI]
AND DL,0FH
ADD DL,AL
MOV CL,1
MOV AL,0
SHR DL,CL
JNC L11
ADD AL,1
L11:
SHR DL,CL
JNC L21
ADD AL,2
L21:
SHR DL,CL
JNC L31
ADD AL,4
L31:
SHR DL,CL
JNC L41
ADD AL,8
L41:
SHR DL,CL
JNC L51
ADD AL,16
L51:
ADD AL,AH
CMP AL,10
JB L61
SUB AL,10
MOV AH,1
JMP L71
L61:
MOV AH,0
L71:
PUSH AX
ADD AL,30H
MOV NUMBER3[BX],AL
INC BX
JMP L01
;********************************************************
OV:
MOV NUMBER3[BX],'$'
MOV SI,0
AGA:
DEC BX
CMP BX,-1
JE OU
MOV AL,NUMBER3[BX]
MOV NUMBER4[SI],AL
INC SI
JMP AGA
OU:
MOV NUMBER4[SI],'$'
INC SI
MOV BX,0
MOV DI,0
CM:
CMP NUMBER4[BX],'0'
JNE CHUAN
INC BX
JMP CM
CHUAN:
MOV AL,NUMBER4[BX]
MOV NUMBER3[DI],AL
INC BX
INC DI
CMP BX,SI
JNE CHUAN
;**********************************************
MOV AH,09H
MOV DX,OFFSET STR3
INT 21H
MOV AH,09H
MOV DX,OFFSET NUMBER3
INT 21H
JMP SSS
OVER:
MOV AX,4C00H
INT 21H
CODE ENDS
END START
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -