我是外星猪 发表于 2013-9-12 23:29:11

025第五章 [BX]和loop指令03的ffff:0006的质疑!!

本帖最后由 我是外星猪 于 2013-9-12 23:29 编辑

assume cs:code
code segment
   
start:         mov ax,0ffffh
               mov ds,ax
               mov bx,6
               mov al,在视频里这2段标红色的小甲鱼把他们改为了 mov ax,
               mov ah,0
               mov dx,0
         
                mov cx,123
s:      add dx,ax
                loop s
         
                mov ax,4c00h
                int 21h
         
code   ends
end start问题如下:
假设在FFFF:0006的这段内存值是
EA 5B E0 00 F0 30 31 2F-30 36 2F 31 30 00 FC 00(红色标注的是小甲鱼视频里的ax值)。
小甲鱼说
mov ax,[ bx]

mov al,
mov ah,0
是一样的,书的作者多此一举,我试验后发现其实是不一样的。这里是不是小甲鱼的口误?
因为按照小甲鱼那样写,相当于带进去了一个字。带进去一个字的话,乘以123那么肯定会超,就会位丢失。这样的话是否超出了DX的存储范围?因为按照原书那样写肯定不会超出范围,因为传进去的只是字节。
2F31 *7B=16AC8B,但是小甲鱼视频里DX的值是AC8B,他说是正确的。
我的疑问如下:
1、这两种写法真的是没区别的吗?
2、按照小甲鱼说的那样是否会丢失位,超出了DX的范围?
3、如果小甲鱼是对的,那么16AC8B前面的16去了哪里?

liangfei44 发表于 2013-9-12 23:29:12

没看过视频,只能单从你的提问来看。
1.当然有区别,一个取字,一个取字节。
2.按照你假设的内存值,绝对会超,溢出,数值错误。
3.逻辑计算结果已经出错了。那计较这个16没任何意义。

hesongnian1 发表于 2013-9-15 20:37:13

支持鱼C 顶顶~

baby520 发表于 2013-9-19 13:18:42

来学习的。。。。

trek600 发表于 2013-10-3 00:15:30

我也是来学习的
页: [1]
查看完整版本: 025第五章 [BX]和loop指令03的ffff:0006的质疑!!