027第五章 [BX]和loop指令05
为什么 ffff:0 是8位的 而ds:0是十六位的呢 我知道 ds是16位寄存器 而 ffff:0 为什么是八位的呢 这只是一个段加偏移的一个寻址物理地址的一个过程。跟多少位无关。主要是看你怎么用,你用了一个字节还是一个字。如果楼主还有什么疑问最好选择一段代码帖出来。这样会好一点。 我现在想知道的是,它问的这个多少位,他是从那里看出来的,本因全是十六位呀,如果是通用寄存器,可分高八位,低八位呀。 怡静 发表于 2013-8-6 12:26 http://bbs.fishc.com/static/image/common/back.gif我现在想知道的是,它问的这个多少位,他是从那里看出来的,本因全是十六位呀,如果是通用寄存器,可分高八 ...
所以说 这个要看 你怎么用了。比如mov进一个ax那肯定是16位的数据进al 或者ah是一个字节 Crazy迷恋. 发表于 2013-8-6 12:34 static/image/common/back.gif
所以说 这个要看 你怎么用了。比如mov进一个ax那肯定是16位的数据进al 或者ah是一个字节
是呀,在用时可以用汇编指令表达出来呀。 怡静 发表于 2013-8-6 12:41 static/image/common/back.gif
是呀,在用时可以用汇编指令表达出来呀。
所以叫他帖代码~~~话说怡静。在学易? Crazy迷恋. 发表于 2013-8-6 12:44 static/image/common/back.gif
所以叫他帖代码~~~话说怡静。在学易?
学过一点易,只会弄简单的程序,现在在学OD,到时再把易学下,没时间学,唉! Crazy迷恋. 发表于 2013-8-6 12:44 static/image/common/back.gif
所以叫他帖代码~~~话说怡静。在学易?
上次学改一个灰色的按纽,就是先设一个灰色的用易写好,然后再设一个不是灰色的用易写好,然后把两个程序放到OD上对比看它们的不同,然后再想怎么改,反正只要花时间就能弄出来,学这个,一是要有时间,二是要有耐心。 怡静 发表于 2013-8-6 12:51 static/image/common/back.gif
上次学改一个灰色的按纽,就是先设一个灰色的用易写好,然后再设一个不是灰色的用易写好,然后把两个程序 ...
{:5_93:}慢慢来别急 ~~~急不来。 Crazy迷恋. 发表于 2013-8-6 13:28 static/image/common/back.gif
慢慢来别急 ~~~急不来。
我从没急过,我是一天学一点,有时一天什么也没学,我学东东就是好玩, 数据存放在内存中,要访问这个数据就要知道这个数所在的内存地址。每个内存单元编有一个地址,每个内存单元是8位。
一个数据较小,存放在内存中只占据一个内存单元,而一个较大的数据则可能占据多个连续的内存单元。
访问一个数据,用到的这个数据址,是这个数据所占据的一个或多个内存单元的起始地址。
mov ax,0ffffh
mov ds,ax
mov al,ds:;把以FFFF:0为起始地址的连续一个或多个内存单元的值传送到al,al只有8位,所以al装下的是FFFF:0这个内存单元的值。
mov ax,ds: ;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:,1 ;FFFF:0 中存放 0000 0001 ?错,两者都没有长度属性,不知道怎么存放。
mov btye prt ds:,1 ;对头,btye prt ds: 指明只使用以ds:为起始的一个字节。FFFF:0 中存放 0000 0001
mov word prt ds:,1 ;指明只使用以ds:为起始的两个字节。FFFF:0 和FFFF:1分别存放0000 0001和0000 0000
数据存放在内存中,要访问这个数据就要知道这个数所在的内存地址。每个内存单元编有一个地址,每个内存单元是8位。
一个数据较小,存放在内存中只占据一个内存单元,而一个较大的数据则可能占据多个连续的内存单元。
访问一个数据,用到的这个数据址,是这个数据所占据的一个或多个内存单元的起始地址。
mov ax,0ffffh
mov ds,ax
mov al,ds:;把以FFFF:0为起始地址的连续一个或多个内存单元的值传送到al,al只有8位,所以al装下的是FFFF:0这个内存单元的值。
mov ax,ds: ;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:,1 ;FFFF:0 中存放 0000 0001 ?错,两者都没有长度属性,不知道怎么存放。
mov btye prt ds:,1 ;对头,btye prt ds: 指明只使用以ds:为起始的一个字节。FFFF:0 中存放 0000 0001
mov word prt ds:,1 ;指明只使用以ds:为起始的两个字节。FFFF:0 和FFFF:1分别存放0000 0001和0000 0000
页:
[1]