assembly - 计算数字列表总和的程序
问题描述
我试图运行这个,但我不知道错误在哪里。
include "emu8086.inc"
ORG 100
.data
ARRAY DB 12H, 24H, 26H, 63H, 25H, 86H, 2FH, 33H, 10H, 35H
SUM DW 0
.code
START: MOV AX, @DATA
MOV DS, AX
MOV CL, 10
XOR DI, DI
MOV BX, OFFSET ARRAY
BACK: MOV AL, [BX+DI]
MOV AH, 00H
MOV SUM, AX
INC DI
DEC CL
JNZ BACK
; print out the number in ax
CALL print_num ; using procedure
RET
END
解决方案
ORG 100
如果您要创建一个 .COM 程序,那么该ORG
指令的正确值是 256,或者以十六进制表示时为 100h。你忘记了h后缀!
.COM 程序格式也很简单,您不需要以下任何内容:.data
、.code
、MOV AX, @DATA
和MOV DS, AX
. 但是,您应该将代码放在数据之前,就像我在下面的程序中所做的那样。
MOV SUM, AX
任务是得到“总和”。您需要使用add
此行的说明。
CALL print_num
在使用 emu8086.inc 中的print_num过程之前,您需要使用DEFINE_PRINT_NUM
and声明它DEFINE_PRINT_NUM_UNS
。
include 'emu8086.inc'
ORG 100h
; code
MOV CL, 10
XOR DI, DI
MOV BX, OFFSET ARRAY
BACK: MOV AL, [BX+DI]
MOV AH, 0
ADD SUM, AX
INC DI
DEC CL
JNZ BACK
CALL print_num
RET ; End of the .COM program
; data
ARRAY DB 12h, 24h, 26h, 63h, 25h, 86h, 2Fh, 33h, 10h, 35h
SUM DW 0
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
END
推荐阅读
- html - 如何垂直对齐不同宽度和线条的 div(选择),同时将它们与其他(文本)对齐 - HTML 和 CSS
- javascript - 如何使用momentjs获取特定的国家时区
- jenkins - 如何在 Jenkins 管道中传递字符串参数来自定义 emailext?
- python - 使用 PyOpenCL 进行边缘检测
- c# - 使用 cloud power shell 在 azure 数据库和本地数据库之间同步数据
- azure - PowerShell - Sync between Azure SQL Database and on-premises database - Unable to find type AzureSqlSyncGroupSchemaTableModel
- ruby-on-rails - 阻止可操作的订阅者将消息提交到他们不属于 Rails 的聊天室
- python - 使用文本更新字典值期间的语法错误
- arrays - Reading individual numbers from text file in ncurses
- git - How to develop between branches when you have permanent unstaged changes?