朱棣手下大将:汇编程序请高手帮忙注释下

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 14:43:35
我是菜鸟,请详细些,谢谢
我是菜鸟,请详细下,谢谢
DATA SEGMENT
LF EQU 0AH
MSG1 DB 'X=','$'
STRX DB 7,0,7 DUP(?)
MSG2 DB LF,'Y=','$'
STRY DB 7,0,7 DUP(?)
SUMMSG DB LF,'X+Y='
SUM DB 7 DUP(?)
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H
LEA DX,STRX
MOV AH,10
INT 21H

LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,STRY
MOV AH,10
INT 21H

LEA SI,STRX+1
CALL ATOI16
MOV BX,AX
LEA SI,STRY+1
CALL ATOI16

ADD AX,BX

LEA SI,SUM
CALL I16TOA
LEA DX,SUMMSG
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODE1 ENDS

CODE2 SEGMENT
ASSUME CS:CODE2
ATOI16 PROC FAR
PUSH BX
PUSH CX
PUSH DX
PUSH SI
XOR AX,AX
MOV CL,[SI]
MOV CH,0
JCXZ DONE
MOV CS:SIGN,0
INC SI
MOV BL,[SI]
CMP BL,'+'
JE SKIPSIGN
CMP BL,'-'
JNE CONVERT
MOV CS:SIGN,1

SKIPSIGN:DEC CX
JCXZ DONE
INC SI
MOV BL,[SI]

CONVERT:MOV DX,10
MUL DX
AND BX,0FH
ADD AX,BX
INC SI
MOV BL,[SI]
LOOP CONVERT

CMP CS:SIGN,0
JE DONE
NEG AX
DONE: POP SI
POP DX
POP CX
POP BX
RET
SIGN DB ?
ATOI16 ENDP

I16TOA PROC FAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
OR AX,AX
JNS POSITIVE
NEG AX
MOV BYTE PTR [SI],'-'
INC SI

POSITIVE:MOV BX,10
XOR CX,CX

NEXT: CWD
DIV BX
OR DL,30H
PUSH DX
INC CX
CMP AX,0
JNZ NEXT

STORE:POP DX
MOV [SI],DL
INC SI
LOOP STORE
MOV BYTE PTR [SI],'$'
POP SI
POP DX
POP CX
POP BX
POP AX
RET
I16TOA ENDP
CODE2 ENDS
END START
楼下的朋友,是注释啊……

向寄存器传数据,调21号中断,跳转,比较,POP数据