吉吉国王 发表于 2019-1-10 10:58:36

实验四:【bx】和loop的使用

编程,向内存0:200~0:23F依次传送数据0~63(3FH)

我的答案:
assume cs:code
code segment
      mov ax, 0020h
      mov ds, ax
      mov ax, 0
      mov bx, 0
      mov cx, 64
      s: mov , al
                inc ax
                inc bx
                loop s

      mov ax,4c00h
      int 21h
      code ends
end

但是测试下来:
assume cs:code
code segment
      mov ax, 0020h
      mov ds, ax
      mov ax, 0
      mov bx, 0
      mov cx, 64
      s: mov , ax
                inc ax
                inc bx
                loop s

      mov ax,4c00h
      int 21h
      code ends
end
连个结果一样,实在费解?
s: mov , al   

s: mov, ax
为什么一样??????

57158597@qq.com 发表于 2019-1-10 16:08:15

al是ax的低8位,0-63没有大于8位,所以用AL和用AX是一样的,如果你把0-63改成300-363那结果就不一样了

吉吉国王 发表于 2019-1-12 14:59:23

本帖最后由 吉吉国王 于 2019-1-12 15:03 编辑

谢谢
还有个疑问?
mov , ax

mov , al

这种操作 对应的类型也不同吧?
第一种是以字为单位操作?
第二种是以字节为单位操作?

行客 发表于 2019-1-15 23:08:43

吉吉国王 发表于 2019-1-12 14:59
谢谢
还有个疑问?



你的理解是对的。

tiger_lu 发表于 2019-3-4 16:54:24

mov , ax
mov , al

当然是不同的,得到的结果当然是不同的,为什么你的得到的结果相同,
秘密就在于 inc bx 这里 ,相当于下一次的低8位刚好覆盖了上一次的高8位,
巧又巧在,0-63 的数据都是在低8位中,即AL中。
按理说 mov , ax , 后面肯定是 inc bx , inc bx , 两个
也就是说,你利用了编写程序的BUG,实现了你的功能。
页: [1]
查看完整版本: 实验四:【bx】和loop的使用