【问题标题】:sum of digits in assembly program汇编程序中的数字总和
【发布时间】:2016-01-01 14:46:08
【问题描述】:

我想对数字的位数求和。这就是为什么,我编写了以下程序:

.MODEL SMALL
.STACK 100H
.DATA
MSG DB 0AH,0DH,'THE SUM OF '
C1  DB ?,'AND'
C2  DB ?,'IS'
SUM DB ?,'$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS,AX

MOV AH,2
MOV DL,'?'
INT 21H

MOV AH,1
INT 21H
MOV C1,AL
INT 21H
MOV C2,AL

ADD AL,C1
SUB AL,30H
MOV SUM,AL

LEA DX,MSG
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H

MAIN ENDP
END MAIN

我可以给出诸如 27 之类的数字。但在屏幕上,只显示以下字符串。

"THe sum of "

我想显示以下字符串:

"The sum of 2 and 7 is 9"

我该怎么做?任何建议都有很大帮助。

【问题讨论】:

  • 打印 2 and 7 is 部分后,将它们从 ASCII 字符串转换为二进制整数(例如,调用或实现您自己的 strtol)。添加这些值,将结果转换回字符串。

标签: assembly sum digit


【解决方案1】:

只要您坚持这些小数字,您的程序应该可以按预期运行。
但是,我建议进行以下更改:

  • andis 单词前后放置空格,以获得更好的布局。
  • 不要使用 ? 问号。您的汇编程序可能已选择将此类字节存储在未初始化的数据部分中,从而破坏了您的排序。

.

C1  DB 'x AND '
C2  DB 'x IS '
SUM DB 'x$'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2017-03-18
    • 2017-04-03
    相关资源
    最近更新 更多