汇编程序使用条件跳转添加奇数

时间:2015-11-18 06:13:37

标签: assembly nasm dos 16-bit

我有一个任务:

  

使用条件跳转编写汇编代码以添加以下十五个奇数。

奇数:3,5,7,9,11,13,15,17,19,21,23,25,27,29,31

我制作了这个解决方案。我想检查一下这里有什么不对......

[org 0x0100]
mov bx, num1
mov cx, 15
mov ax, 0
li:
add ax, [bx]
add bx, 2
sub cx, 1
jnz li
mov ax, 0x4c00
int 0x21
num1: dw 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,23,25,27,29,31

1 个答案:

答案 0 :(得分:1)

这肯定是一种方式,你需要特别注意的事实是你在ax累积总和然后你覆盖{{1}当您使用ax退出程序时。

巧合的是,这些数字总和为255,因此它实际上适合进入int 21, fn 4c,这是该中断用于返回代码的寄存器(参见Ralf Brown's excellent interrupt list })。

DOS是否会对它做任何聪明的事情,我不能说: - )

为了在退出程序时保留al,只需执行以下操作:

al

您可能要考虑的另一件事是直接打印项目而不是返回它。以下代码显示了如何使用我的库中的函数执行此操作,该函数能够将mov ah, 0x4c int 0x21 寄存器输出为十进制值:

al