鱼C论坛

 找回密码
 立即注册
查看: 4388|回复: 3

刚学汇编的新手请教个问题。关于 mov al , [0]

[复制链接]
发表于 2011-5-25 21:01:27 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loop 于 2011-5-29 23:26 编辑

mov bx,1000H
mov ds,bx
mov al, [0]
今天刚学了DS和address,一直没看懂mov al, [0] 这句,al不是AX的低位吗,就算给1000H加偏移地址为什么加给al呢???{:soso__10363323154519607490_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-25 22:01:29 | 显示全部楼层
是把当前数据段地址的偏移地址为0的内存上的东东赋给传说中的ax寄存器的低8位al所以就是这样子啦同学你明白了吗

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 你不知道没标点符号读者很累人吗?

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-25 22:52:14 | 显示全部楼层
本帖最后由 liuhui88126 于 2011-5-25 22:53 编辑

这样理解,
就是把段地址为DS,偏移地址为【0】处得内存单元中的字节数据放入AX中,为什么是字节数据呢,因为前面是AL,AL为8位,只能存放一个内存单元,假设ds:[0]处得数据为01,ah=0,al=0 执行完之后呢,AX=0001,懂了没有?


还有,你那个不是给ds加偏移地址,是把偏移地址中的数据给al,,你滴,明白?

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 正解~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-26 05:34:06 | 显示全部楼层
[0]是个内存单元  1000H是不能直接放入ds中使用的   要通过通用寄存器才能放进ds中  bx是个通用寄存器  所以mov bx,1000H 就是先把段地址为1000放入通用寄存器bx中 mov ds,bx就是通过bx之手把段地址放入ds(注:cs是断码段寄存器,ds是数据段寄存器,ss是栈段寄存器)  然后mov al,[o] al是ax的后半部分  一个完整的ax使用高8位ah和低8位al组成     如果只提示你把 暴风截屏20110526052626.jpg 一个偏移地址的内存单元为[0]的话  看图就是第一个0的的数据时20h  一般的内存单元都是用字的形式来存储的 所以他会把1的数据也拉进去形成4E20H   如果只取al的话  他就会不管前面的  而是直接把20H取走了  然后后便如果有断码的话就很容易理解了;P

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
loop + 1 + 1 很详细~很好很强大。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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