我是在30小时前开始学习装配的 我正在尝试做一个活动,我可以运行一些代码 但我无法打印这两个数字的总和,我的代码有什么问题?
这是我当前的输出
Enter First Number:
Enter Second Number:
但有些人不打印
这是我的代码
.MODEL small
.STACK 100h
.DATA
operation db, 13, 10, "Addition $"
message1 db 13, 10, "Enter First Number: $"
message2 db 13, 10, "Enter second Number: $"
message3 db 13, 10, "Sum: $"
newline db 13, 10, "$"
nameinput label byte
maxnamelen db 50
curnamelen db ?
namefield db 50 dup(?)
.CODE
start:
mov ax, @data
mov ds,ax
mov ah,09h
mov dx, offset operation
int 21h
mov ah, 01h
int 21h
cmp al, '1'
je Addition
Addition:
mov ah, 09h
mov dx, offset message1
int 21h
mov ah, 01h
int 21h
mov ah, 09h
mov dx, offset newline
int 21h
mov ah, 09h
mov dx, offset message2
int 21h
mov ah, 01h
int 21h
add al, bl
mov ah, 09h
mov dx, offset newline
int 21h
mov ax, 4c00h
int 21h
END
答案 0 :(得分:1)
您正在阅读ascii字符,而不是按数字转换它们。我没有看到你试图写出结果的部分(注意,这只有在没有随身携带的情况下才有效!9 + 2 - > ascii&#39 ;;')
mov dx, offset message1
int 21h
mov ah, 01h
int 21h
mov bl,al ; save what you read
sub bl,48 ; subtract '0'
...
add bl,al ; won't subtract '0' from second number... (save in bl)
mov ah, 09h
mov dx, message3
int 21h
mov ah, 02 ; print dl
mov dl,bl ; get value
int 21h ; ...because you would add '0' to print