【发布时间】:2018-02-14 10:54:37
【问题描述】:
所以我有一个代码,其中有 2 个标签,按 1 表示加法,按 2 表示减法问题,只有一个标签会被读取,请帮助我解决这个问题。这是我的代码:
JMP START
msg1 dw 10, 13, 10, 13, "Choose Operations:",0Dh,0Ah,0Dh,0Ah,09h
dw "1- Addition[+]",0Dh,0Ah,09h
dw "2- Subtraction[-]",0Dh,0Ah,09h
dw "3- Exit",0Dh,0Ah,09h
dw "Enter: "
dw '$'
START:
mov ax, 3
int 10h
mov ah, 2
mov dh, 10
mov dl, 10
int 10h
lea dx, msg1
mov ah, 09h
int 21h
getnum:
mov ah, 1
int 21h
cmp al, '1'
jl START
cmp al, '3'
jg START
cmp al, "1"
je Addition
cmp al, "2"
je Subtraction
cmp al, "3"
jmp Quit
cmp al, "4"
Quit:
mov ah,4ch
int 21h
Subtraction:
VAR1 DW 5, 2 DUP(?)
VAR2 DW 5, 2 DUP(?)
PROMPT DW 'ENTER FIRST NUMBER:', '$'
PROMPT1 DW 'ENTER SECOND NUMBER :', '$'
PROMPT2 DW 'RESULT OF FIRST AND SECOND NUMBER IS: ', '$'
LEA DX,PROMPT
MOV AH,09H
INT 21H
;======================
MOV AH, 00
INT 16h
MOV VAR1,AL
MOV DL, AL
MOV AH, 2H
INT 21H
;======================
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
LEA DX,PROMPT1
MOV AH,09H
INT 21H
;=================================
MOV AH, 00
INT 16h
MOV VAR2,AL
MOV DL, AL
MOV AH, 2H
INT 21H
;======================
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
;===============================
SUB VAR1,30H
MOV BH,VAR1
SUB VAR2,30H
MOV BL,VAR2
SUB BH,BL
LEA DX,PROMPT2
MOV AH,09H
INT 21H
;==================================
ADD BH,30H
MOV VAR2,BH
MOV DL, BH
MOV AH, 2H
INT 21H
Addition: **~02 Jump > 128~**
mov ax, 3
int 10h
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
M1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
M2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
M3 DB 10,13,"SUM: $"
M4 DB 10,13,"DIFFERENCE: $"
mov ax, 3
int 10h
lea dx, M1
mov ah, 9
int 21h
mov ah, 1
int 21h
sub al, 30h
mov NUM1, al
lea dx, M2
mov ah, 9
int 21h
MOV AH,1
INT 21H
sub al, 30h
mov NUM2, al
add al, NUM1
mov RESULT, al
mov ah, 0
aaa
add ah, 30h
add al, 30h
mov bx, ax
lea dx, M3
mov ah, 9
int 21h
mov ah, 2
mov dl, bh
int 21h
mov ah, 2
mov dl, bl
int 21h
mov ah, 4ch
int 21h
ret
【问题讨论】:
-
用
db定义字符串(你使用的是CP437,它是单字节编码)。还要保持一致的风格,使用'或"。 (我喜欢"用于字符串,'用于字符)。 -
玛格丽特布鲁姆我真的需要一个代码来让标签运行:(
-
恐怕你来错地方了:(
-
这与128bit有什么关系?
标签: assembly dos x86-16 real-mode