在16位汇编中将ASCII字符显示为数字

问题描述

我正在尝试编写一个程序以获取3个值的总和并获得均值。到目前为止,我能够通过从总和中减去某个值来“正确地”获得总和,以获得总和的前导数字。从总和中减去27h / 29可能不是最有效的方法。我知道这可能不是最佳解决方案,但是使用除法会给我带来一些错误,并显示一些随机符号,就像在我变成评论代码块上看到的一样。

TITLE Add       (sum.asm)

; This program adds 8-bit values

.model small
.stack 100h
.data
ThreeBytes db 10h,20h,30h   ;expected sum is 60h or 96d
message db 0ah,0dh,"Sum = "
TheSum db ?,0ah,"$"


.code
main PROC
   mov  ax,@data
   mov  ds,ax
   mov  al,ThreeBytes
   add  al,ThreeBytes + 1
   add  al,ThreeBytes + 2
   ;sub al,40  
   
   ; mov ch,0
   ; mov ch,al
   ; mov bl,10
   ; div bl
   
   sub al,27h ;or 39d to get 9
   mov  TheSum,al ;output is ' (apostrophe) = 60h or 96d

   mov  dx,offset message
   mov  ah,9

   
   int 21h
   mov ax,4C00h
   int 21h

main endp
end main

这是我从DOSBox获得的输出

enter image description here

我是一个完全的入门者,几乎没有汇编语言知识,所以我希望有一个简单的解决方案/说明。上面的代码是我发现的不同程序的组合,确实可以工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)