出现应用程序错误的原因很多: 1、应用程序没有检查内存分配失败 2、应用程序由于自身BUG引用了不正常的内存光标 3、木马或病毒破坏 4、 *** 作戚缓首系统本身bug 有时候 *** 作系哪枯统本身也会有BUG,要注意安装官方发行的升级程序高数。更新 *** 作系统,让 *** 作系统...
DATAS SEGMENTSTR1 DB 'Please input the first number(10-99) a:$'
STR2 DB 'Please input the second number(10-99) b:$'
STR3 DB 'The anwser a+b=$'
STR4 DB 'a=$'
STR5 DB 'b=$'
D1 DB 10
DB ?
D11 DB 10 DUP(?)
D2 DB 10
DB ?
D22 DB 10 DUP(?)
N1 DW ?
N2 DW ?
DATAS ENDS
STACKS SEGMENT
STA DB 100 DUP(?)
TOP EQU LENGTH STA
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV DX,OFFSET STR1 输入第液宏一个个数
MOV AH,9
INT 21H
MOV DX,OFFSET D1
MOV AH,0AH
INT 21H
MOV DL,0DH 回车换行
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV DX,OFFSET STR2 输入第二个数
MOV AH,9
INT 21H
MOV DX,OFFSET D2
MOV AH,0AH
INT 21H
MOV DX,0DH
MOV AH,2
INT 21H
MOV DX,0AH
MOV AH,2
INT 21H
MOV DX,OFFSET STR4
MOV AH,9
INT 21H
LEA SI,D1第一个数放在D1
LEA DI,D11
CALL SLZSJZ 调用子程序,将字符串D1转换为真正的两位数
MOV N1,AX
MOV DX,0DH
MOV AH,2
INT 21H
MOV DX,0AH
MOV AH,2
INT 21H
MOV DX,OFFSET STR5
MOV AH,9
INT 21H
LEA SI,D2 第二个数放在D2
LEA DI,D22
CALL SLZSJZ 调用子程序,将字符串D2转换为真正的两位数
MOV N2,AX
MOV DX,0DH
MOV AH,2
INT 21H
MOV DX,0AH
MOV AH,2
INT 21H
MOV DX,OFFSET STR3
MOV AH,9
INT 21H
CALL JGTZ
XOR DX,DX
XOR CH,CH
XOR AH,AH
XOR BH,BH 输出结果,先输出百位,如为闹游册0,则磨颂不输出;在输出十位和个位
CMP CL,30H
JZ DEW
PUSH AX
MOV DL,CL
MOV AH,2
INT 21H
POP AX
DEW:MOV DL,AL
MOV AH,2
INT 21H
XOR DX,DX
MOV DL,BL
MOV AH,2
INT 21H
JMP EXIT
JGTZ PROC
MOV BX,N1
MOV DX,N2
XOR CX,CX
ADD DX,BX
MOV AX,DX
XOR DX,DX
MOV DL,100
DIV DL
ADD AL,30H
MOV CL,AL 结果的第一位放在CL
MOV AL,AH
XOR AH,AH
MOV DL,10
DIV DL
ADD AL,30H结果的第二位放在AL
MOV BL,AH
ADD BL,30H结果的第三位放在BL
XOR AH,AH
RET
JGTZ ENDP
SLZSJZ PROC
MOV [SI+4],'$'
MOV DX,DI 输出输入的两位数
MOV AH,9
INT 21H
XOR CX,CX 将输入的字符串每位的ASCII码转为真正的数字
MOV CX,2
SUB [SI+2],30H
SUB [SI+3],30H
XOR AX,AX计算出输入的两位数
XOR BX,BX
MOV AL,10
MOV BL,[SI+2]
MUL BL
ADD AL,[SI+3]
RET
SLZSJZ ENDP
EXIT:MOV AH,4CH
INT 21H
CODES ENDS
END START
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)