【问题标题】:Sum of a word array not storing in another word array一个单词数组的总和不存储在另一个单词数组中
【发布时间】:2013-12-16 14:23:15
【问题描述】:

*分配给我的任务是编写一个汇编程序,该程序找到三个 8 位值的总和并将其放在内存中的位置 SUMS 中。然后计算三字变量的总和,并将其放在内存中的位置 SUMS + 2。使用以下数据:

BYTE_ARRAY DB 10H,20H,30H
WORD_ARRAY DW 1000H,2000H,3000H
SUMS DW 0,0*

我的问题是下面的代码给了我一个错误

mov sums,al

我知道一个是 16 位地址,另一个是 8 位地址,但有没有其他方法可以绕过它?

编辑:

完整代码:

    org 100h

.data 
byte_array db 10h,20h,30h
word_array dw 1000h,2000h,3000h


sums dw 0,0

.code

mov ax,@data
mov ds,ax
mov bx,offset byte_array
mov al,[bx]
inc bx
add al,[bx]
inc bx
add al,[bx]
mov si,offset sums
mov [si],al

mov bx,offset word_array
mov ax,[bx]
add ax,[bx+2]
add ax,[bx+4]
mov [bx+6], ax





ret

我唯一剩下的问题是我不明白 SUMS + 2 的含义。请问我要做什么?

【问题讨论】:

  • 不,这是我所得到的。我只尝试添加到 3 个 8 位值。剩下的问题没有触及。

标签: arrays assembly x86 addressing-mode


【解决方案1】:

al 是 8 位。

sum 是 16 位。

所以他们有冲突。

【讨论】:

    【解决方案2】:
    SUMS DW 0,0
    mov sums,al
    

    当你声明你的数组是字长时,你的操作数应该匹配。

    mov sums, ax
    

    【讨论】:

    • 另外,存储三字变量之和并将其放在内存中的位置SUMS + 2的任务将通过指针的方式实现?对吗?
    • 这是可以做到的,而且是有道理的。不过,这并不是绝对必要的。由于缺少代码,我没有评论那部分。
    猜你喜欢
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多