编程计算以下8个数据的和,结果存放在ax寄存器中
0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
结果为: 4BDB
P123, 《汇编语言(第2版)》,王爽
8个数据定义在代码段cs,我的想法是将cs赋值给ds,然后使用bx做偏移地址"add ax, ds:[bx]",但是书上是直接使用"add ax, cs:[bx]",运行之后导致结果不相同。
【1.运行结果是:ax = 4BD8】
assume cs:code
;代码段
code segment
;定义8个字型数据
dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
;设置偏移地址
mov bx, 0
;设置循环次数
mov cx, 8
;将ax寄存器清零
mov ax, 0
s: add ax, cs:[bx]
add bx, 2
loop s
;正常结束程序
mov ax, 4c00h
int 21h
code ends
end
【2.运行结果是:ax =5EAE】
assume cs:code
;代码段
code segment
;定义8个字型数据
dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
;将代码段设置为数据段
mov ax, cs
mov ds, ax
;设置偏移地址
mov bx, 0
;设置循环次数
mov cx, 8
;将ax寄存器清零
mov ax, 0
s: add ax, ds:[bx]
add bx, 2
loop s
;正常结束程序
mov ax, 4c00h
int 21h
code ends
end