首页 > 解决方案 > 我对汇编代码“Relative jump out of range”有疑问

问题描述

我有计算器的汇编语言代码,但它有两个我无法解决的错误

第 40 行和第 42 行的问题 第 40 行“Relative jump out of range by 0006h bytes”

第 42 行中的“相对跳转超出范围 0003h 字节”

这是我的迷你项目,请帮助我:(

model small
.stack 100h
.data
main_menu db "******* My Calculator *******",0dh,0ah
db "Usman Institute of Technology",0dh,0ah
db "*****************************",0dh,0ah
db "* Enter A for Addition ",0dh,0ah
db "* Enter S for Subtraction ",0dh,0ah
db "* Enter E for Exit ",0dh,0ah
db "* Enter R to return to menu",0dh,0ah,'$'
MSG1 db 0dh,0ah,"Enter your Choice:",0dh,0ah,'$'
MSG2 db 0dh,0ah,"Enter First number:",0dh,0ah,'$'
MSG3 db 0dh,0ah,"Enter Second number:",0dh,0ah,'$'
MSG4 db 0dh,0ah,'$'
MSG5 db 0dh,0ah,"Your Result is:",0dh,0ah,'$'
choice db ?
no1 db ?
no11 db ?
no22 db ?
no2 db ?
result db ?
.code
Main proc
mov ax,@data
mov ds,ax
Start:
mov ah,09h
mov dx,offset main_menu
int 21h
mov dx,offset MSG1
int 21h
mov ah,01h
int 21h
mov choice,al
cmp choice,'A'
JE addr
cmp choice,'S'
JE subtr
cmp choice,'E'
JE Ex
cmp choice,'R'
JE RE
addr:
mov ah,09h
mov dx,offset MSG2
int 21h
mov ah,01h
int 21h
mov no1,al
mov ah,09h
mov dx,offset MSG3
int 21h
mov ah,01h
int 21h
mov no2,al
mov ah,09h
mov dx,offset MSG4
int 21h
mov dx,offset MSG5
int 21h
mov al,no2
mov bl,no1
add al,bl
aaa
or ax,3030h
mov ah,0eh
int 10h
mov ah,4ch
int 21h 
subtr:
inpt:
mov ah,09h
mov dx,offset MSG2
int 21h
mov ah,01h
int 21h
mov no11,al
mov ah,09h
mov dx,offset MSG3
int 21h
mov ah,01h
int 21h
mov no22,al
mov ah,09h
mov dx,offset MSG4
int 21h
mov dx,offset MSG5
int 21h
mov al,no11
mov bl,no22
cmp al,bl
JNG inpt
sub al,bl
aaa
or ax,3030h
mov ah,0eh
int 10h
mov ah,4ch
int 21h
EX:
mov ah,4ch
int 21h
RE:
jmp Start
mov ah,4ch
int 21h
Main endp
end main

标签: assemblyx86-16tasm

解决方案


推荐阅读