程序集添加两个数字
Posted
技术标签:
【中文标题】程序集添加两个数字【英文标题】:Assembly adding two numbers 【发布时间】:2016-04-19 10:49:16 【问题描述】:我在 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
【问题讨论】:
如果您需要从键盘捕获一个数字作为字符串,然后将其转换为数字,对其进行一些数学运算,然后将数字转换为字符串以显示它,此答案包含两个过程:string2number 和 number2string = ***.com/questions/30243848/… 【参考方案1】:您正在阅读 ascii 字符,而不是将它们转换为数字。我没有看到您尝试编写结果的部分(请注意,这仅在没有进位时才有效!9+2 -> ascii ';')
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
【讨论】:
让我试试这个先生。 它有效,但问题是当我将 1 和 2 相加时,总和为 4。以上是关于程序集添加两个数字的主要内容,如果未能解决你的问题,请参考以下文章
如何在人脸的两个点集之间添加度量以将其用于数字图像中的对象检测以进行人脸识别
使用InternalsVisibleToAttribute给assembly添加“友元assembly”特性遭遇"强签名"