鱼C论坛

 找回密码
 立即注册
查看: 2646|回复: 1

[争议讨论] 汇编语言视频教程025第五章 [BX]和loop指令03

[复制链接]
发表于 2016-12-26 16:21:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xiaoone 于 2016-12-26 16:22 编辑

视频中,讲5.3节-程序5.3的时候,小甲鱼讲
mov ax, [bx]

mov al, [bx]
mov ah, 0

是没有区别的,认为书作者是多此一举。

小弟尝试运行了一遍,发现其实是有区别的:


从我的机器来看:

初始内存数据

初始内存数据


初始:ffff6 的值为 31,ffff7的值为2F。

一、首先,依照教材
mov al, [bx]
mov ah, 0

结果如下:

教材

教材


dx=0093

二、按mov ax,[bx]来,
运行结果为:

dx=8D93
(新人限制,传不了图了)


为什么有区别呢?

我们回到最开始看就明白了,初始:ffff6 的值为 31,ffff7的值为2F
如果按教材来运行,
assume cs:code
code segment

start:mov ax, 0ffffh
                        mov ds, ax
                        mov bx, 6
                        mov al, [bx]
                        mov ah, 0
                        mov dx, 0
                        
                        mov cx, 3
                s:add dx, ax
                        loop s
                        
        
        
                        mov ax,4c00h
                        int 21h
        
        code ends
end start


(al)=31,(ah)=00,循环3次,dx=0091h。


如果按mov ax,[bx]来运行,
assume cs:code
code segment

start:mov ax, 0ffffh
                        mov ds, ax
                        mov bx, 6
                        mov ax, [bx]
                        mov dx, 0
                        
                        mov cx, 3
                s:add dx, ax
                        loop s
                        
        
        
                        mov ax,4c00h
                        int 21h
        
        code ends
end start


mov ax, [bx]后,(al)=31,(ah)=2F。循环3次,就相当于2F31*3=8D93。dx=8D93




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-26 20:28:26 | 显示全部楼层
支持支持支持支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 03:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表