XP3200+ 发表于 2005-8-10 00:00:00

请指点extp指令的执行

比如说
extp    #3Fh, #1
mov   r2, loc_8FFC7E
我的理解是执行#3Fh页的1条指令,但是这条指令的执行和那条mov指令是什么样的关系呢?是extp结束后执行mov还是和mov并发执行呢?
如果是执行#3Fh中的指令的话,执行这个页面的哪个偏移量的指令呢?我看了166汇编手册,但是里面没有明确说明。
请高手指点!

lishenglyx 发表于 2005-8-10 00:01:00

以下是引用XP3200+在2004-3-2 22:20:09的发言:
比如说
extp    #3Fh, #1
mov   r2, loc_8FFC7E
我的理解是执行#3Fh页的1条指令,但是这条指令的执行和那条mov指令是什么样的关系呢?是extp结束后执行mov还是和mov并发执行呢?
如果是执行#3Fh中的指令的话,执行这个页面的哪个偏移量的指令呢?我看了166汇编手册,但是里面没有明确说明。
请高手指点!


顺序执行,先EXTP转到页面,然后MOVE

EXTP作用是转到loc_8ffc7e这个地址的页面.NO#3FH中的指令

XP3200+ 发表于 2005-8-10 00:02:00

我有点迷糊了。
这个是来电防火墙那个补丁的一个片段,我是这样理解的
seg125:014A               extp    #3Fh, #1 ; 跳转到页面#3Fh,执行其中的一条指令
seg125:014E               mov   r2, loc_8FFC7E ;从地址8FFC7E取一个字节送到r2中
seg125:0152               extp    #3Ch, #1 ; 跳转到页面#3Ch,执行其中一条指令
seg125:0156               mov   r1, loc_8F3DAC ;从地址8F3DAC取一个字节送到r1中
seg125:015A               jmpr    cc_Z, loc_FD018C;r1为空则转去FD018C
我就是搞不懂extp这条指令转换到页面起到了什么作用,执行了那个地址的指令

lishenglyx 发表于 2005-8-10 00:03:00

"从地址8F3DAC取一个字节送到r1中"
6688要从地址取数, 要先转到这个地址所在页才行,地址8F3DAC就在#3ch这一页
而不是
跳转到页面#3Ch,执行其中一条指令
看看cool_lang的入门吧,很详细

jlumjasmine 发表于 2005-8-10 00:04:00

临时换页指令extp #p ,#num
p 是page 地址 ,num 为参数,指定以下的几条指令在指定页执行。

seg125:014A               extp    #3Fh, #1 ; 跳转到页面#3Fh,执行其中的一条指令
seg125:014E               mov   r2, loc_8FFC7E ;从地址8FFC7E取一个字节送到r2中
                                              这个时候的数据地址是 3f8ffc7e 其中的8ffc7e为页偏移
seg125:0152               extp    #3Ch, #1 ; 跳转到页面#3Ch,执行其中一条指令
seg125:0156               mov   r1, loc_8F3DAC ;从地址8F3DAC取一个字节送到r1中
                                              同理这里的数据地址为 3c8f3dac
seg125:015A               jmpr    cc_Z, loc_FD018C;r1为空则转去FD018C

coollang 发表于 2005-8-10 00:05:00

2、指针
C166的处理器地址空间为24位(16M),整型是16位。对于数据来说,寻址用Page,而对于指令来说,寻址使用Seg。对于一个16位的数据地址Offset来说,要想获得24位的绝对地址,需要和DPP0-3来配合得到。DPP(Data Page Pointer)是4个数据Page寄存器,根据Offset的最高两位Bit,来决定使用哪一个DPP。使用时用Offset和当前使用的DPP左移14位相加即为24bit的地址。如果临时指定一个绝对地址,可以用EXTP或EXTS,分别对应Page和Seg。所以一个DWORD的绝对地址指针(far*)根据是数据还是地址会有不同的解释。在Keil中可以用pag()和seg()来取得对应的内容。这部分的内容可以详细看一下指令手册的第六章Addressing Modes。
=======================================================
这个是进阶中的相关部分,在程序中正常情况下寻址数据是会和DPP配合的,如果想临时寻址其他页(段)的数据,则可以用EXTP(EXTS)来配合的到一个24位far指针。



[此贴子已经被作者于2004-3-5 12:16:41编辑过]

XP3200+ 发表于 2005-8-10 00:06:00

机器Crash了,两天没上来,这个问题懂了,谢谢诸位!
页: [1]
查看完整版本: 请指点extp指令的执行