assembly - 跳出范围
问题描述
我正在做一个关于我的大学考试的组装项目。它是一个在 8086 处理器上使用 Tasm 4.1 的科学计算器应用程序。
我面临的问题是跳跃超出范围。我试图在互联网上找到解决方案,并尝试了多种方法来处理它,但都没有奏效。
最后,当我尝试将 .386 放入我的程序中时,它确实解决了问题,但现在我在加法中遇到了计算问题,所以请帮我解决这个问题......
这是我的代码。
PRINT MACRO MSG
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM
READ MACRO N,J1,J2
J1: MOV AH,01H
INT 21H
CMP AL,0DH
JE J2
SUB AL,30H
MOV BL,AL
MOV AX,N
MOV DX,0AH
MUL DX
XOR BH,BH
ADD AX,BX
MOV N,AX
JMP J1
J2: NOP
ENDM
PRINTMUL MACRO N1,L2,L3
MOV BX,000AH
MOV AX,N1
XOR CX,CX
L2: XOR DX,DX
DIV BX
PUSH DX
INC CX
CMP AX,0000H
JNE L2
L3: POP DX
ADD DL,30H
MOV AH,02H
INT 21H
LOOP L3
ENDM
intro macro
print msg1
nw_line
print msg2
nw_line
print msg3
nw_line
print msg4
endm
nw_line macro
mov dl,0ah
mov ah,02
int 21h
endm
addm macro
PRINT MS
READ N,U1,U2
PRINT MT
READ M,G1,G2
PRINT ANS
MOV AX,N
ADD M,Ax
PRINTMUL AX,H1,J5
endm
square macro
endm
cube macro
endm
divm macro
endm
kill macro
mov ah,4ch
int 21h
endm
.model large
.stack 100h
.data
wrg db 13,10,"Wrong Choice ","$"
ch0 db 'Press Keys for the below Operations:$'
ch1 DB 13,10,"1 For Addition ","$"
ch2 DB 13,10,"2 For Subtraction ","$"
ch3 DB 13,10,"3 For Multiplication ","$"
ch4 DB 13,10,"4 For Division ","$"
ch5 DB 13,10,"5 For Square of a Number ","$"
ch6 DB 13,10,"6 For Cube of a Number ","$"
choice db ?
msg1 db ' ___________________________________________________$'
msg2 db '| Scientific Calculator |$'
msg3 db '| By kABIR kHAN & Muneeb Ur Rehman |$'
msg4 db '|___________________________________________________|$'
MS DB 13,10,"INPUT FIRST NUMBER: ","$"
MT DB 13,10,"INPUT SECOND NUMBER: ","$"
MF DB 13,10,"INPUT NUMBER: ","$"
ANS DB 10,13,"RESULT IS : $"
N DW ?
M DW ?
.code
start:
mov ax,@data
mov ds,ax
intro
nw_line
nw_line
print ch0
print ch1
print ch2
print ch3
print ch4
print ch5
print ch6
nw_line
mov ah,01
int 21h
mov choice,al
nw_line
cmp choice,31h
je addition
cmp choice,32h
je subtraction
cmp choice,33h
je multi
cmp choice,34h
je division
cmp choice,35h
je squ
cmp choice,36h
jmp cue
addition:
addm
loop addition
subtraction:
loop subtraction
multi:
loop multi
division:
divm
loop division
squ:
square
loop squ
cue:
cube
loop cue
kill
end start
解决方案
推荐阅读
- python - 如果在 Windows 上导入 python 包,Apache 不起作用
- python - 画布线未出现在屏幕上
- c# - 在视图模型中验证域名
- node.js - Nodejs 集群中的 PostgreSQL 连接池
- jmeter - 通过 JMeter JSR223 采样器表单提供参数的正确语法是什么?
- lexicon - 如何在 Liferay 7.2 中实现 Clay
- javascript - MxCodec 解码功能不适用于 XML
- sequelpro - 在服务器之间使用 sequel pro 复制数据库和表的最快方法
- vb.net - Visual Studio 2019“无法从 packages.config 解析版本值 '1.0.0-preview2'”
- flutter - 参数不匹配的闭包调用:函数'_myListView.functionOne'