鱼C论坛

 找回密码
 立即注册
查看: 1928|回复: 11

027第五章 [BX]和loop指令05

[复制链接]
发表于 2013-8-6 09:33:33 | 显示全部楼层 |阅读模式

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

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

x
为什么 ffff:0 是8位的   而ds:0是十六位的呢 我知道 ds是16位寄存器 而 ffff:0 为什么是八位的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-6 11:07:48 | 显示全部楼层
这只是一个段加偏移的一个寻址物理地址的一个过程。跟多少位无关。主要是看你怎么用,你用了一个字节还是一个字。如果楼主还有什么疑问最好选择一段代码帖出来。这样会好一点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:26:28 | 显示全部楼层
我现在想知道的是,它问的这个多少位,他是从那里看出来的,本因全是十六位呀,如果是通用寄存器,可分高八位,低八位呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:34:50 | 显示全部楼层


所以说 这个要看 你怎么用了。比如mov进一个ax那肯定是16位的数据进al 或者ah是一个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:41:34 | 显示全部楼层
Crazy迷恋. 发表于 2013-8-6 12:34
所以说 这个要看 你怎么用了。比如mov进一个ax那肯定是16位的数据进al 或者ah是一个字节

是呀,在用时可以用汇编指令表达出来呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:44:41 | 显示全部楼层
怡静 发表于 2013-8-6 12:41
是呀,在用时可以用汇编指令表达出来呀。

所以叫他帖代码~~~话说怡静。在学易?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:48:37 | 显示全部楼层
Crazy迷恋. 发表于 2013-8-6 12:44
所以叫他帖代码~~~话说怡静。在学易?

学过一点易,只会弄简单的程序,现在在学OD,到时再把易学下,没时间学,唉!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 12:51:20 | 显示全部楼层
Crazy迷恋. 发表于 2013-8-6 12:44
所以叫他帖代码~~~话说怡静。在学易?

上次学改一个灰色的按纽,就是先设一个灰色的用易写好,然后再设一个不是灰色的用易写好,然后把两个程序放到OD上对比看它们的不同,然后再想怎么改,反正只要花时间就能弄出来,学这个,一是要有时间,二是要有耐心。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 13:28:23 | 显示全部楼层
怡静 发表于 2013-8-6 12:51
上次学改一个灰色的按纽,就是先设一个灰色的用易写好,然后再设一个不是灰色的用易写好,然后把两个程序 ...

慢慢来别急 ~~~急不来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 13:31:16 | 显示全部楼层
Crazy迷恋. 发表于 2013-8-6 13:28
慢慢来别急 ~~~急不来。

我从没急过,我是一天学一点,有时一天什么也没学,我学东东就是好玩,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-6 14:20:36 | 显示全部楼层
数据存放在内存中,要访问这个数据就要知道这个数所在的内存地址。每个内存单元编有一个地址,每个内存单元是8位。
一个数据较小,存放在内存中只占据一个内存单元,而一个较大的数据则可能占据多个连续的内存单元。
访问一个数据,用到的这个数据址,是这个数据所占据的一个或多个内存单元的起始地址。
mov ax,0ffffh
mov ds,ax
mov al,ds:[0]  ;把以FFFF:0为起始地址的连续一个或多个内存单元的值传送到al,  al只有8位,所以al装下的是FFFF:0这个内存单元的值。
mov ax,ds:[0] ;AX有16位,所以AX装下了FFFF:0和FFFF:1,其中AL装下FFFF:0中的值,AH装下了FFFF:1

立即数没有长度(8位或16)这个属性,但通过换算成2进制形式可知它至少要多少个内存单元才能存放得下。代码中给出的一个内存地址也没有其对应的数据的长度这个属性,它作为一个起始地址使用,长度不确定。

mov al,1 ; al的值为  0000 0001 (2进制)
mov ax,1 ;ax的值为 0000 0000 0000 0001 (高字节填充0)
mov al, 1 0000 0000b ;出错,放不下。

mov ds:[0],1   ;FFFF:0 中存放 0000 0001 ?错,两者都没有长度属性,不知道怎么存放。
mov btye prt ds:[0],1 ;对头,btye prt ds:[0] 指明只使用以ds:[0]为起始的一个字节。FFFF:0 中存放 0000 0001
mov word prt ds:[0],1 ;指明只使用以ds:[0]为起始的两个字节。FFFF:0 和FFFF:1分别存放0000 0001和0000 0000




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

使用道具 举报

发表于 2013-8-6 14:20:42 | 显示全部楼层
数据存放在内存中,要访问这个数据就要知道这个数所在的内存地址。每个内存单元编有一个地址,每个内存单元是8位。
一个数据较小,存放在内存中只占据一个内存单元,而一个较大的数据则可能占据多个连续的内存单元。
访问一个数据,用到的这个数据址,是这个数据所占据的一个或多个内存单元的起始地址。
mov ax,0ffffh
mov ds,ax
mov al,ds:[0]  ;把以FFFF:0为起始地址的连续一个或多个内存单元的值传送到al,  al只有8位,所以al装下的是FFFF:0这个内存单元的值。
mov ax,ds:[0] ;AX有16位,所以AX装下了FFFF:0和FFFF:1,其中AL装下FFFF:0中的值,AH装下了FFFF:1

立即数没有长度(8位或16)这个属性,但通过换算成2进制形式可知它至少要多少个内存单元才能存放得下。代码中给出的一个内存地址也没有其对应的数据的长度这个属性,它作为一个起始地址使用,长度不确定。

mov al,1 ; al的值为  0000 0001 (2进制)
mov ax,1 ;ax的值为 0000 0000 0000 0001 (高字节填充0)
mov al, 1 0000 0000b ;出错,放不下。

mov ds:[0],1   ;FFFF:0 中存放 0000 0001 ?错,两者都没有长度属性,不知道怎么存放。
mov btye prt ds:[0],1 ;对头,btye prt ds:[0] 指明只使用以ds:[0]为起始的一个字节。FFFF:0 中存放 0000 0001
mov word prt ds:[0],1 ;指明只使用以ds:[0]为起始的两个字节。FFFF:0 和FFFF:1分别存放0000 0001和0000 0000




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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 05:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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