论坛: 编程破解 标题: 请教8086/8088机几个汇编的问题 复制本贴地址    
作者: dashan [dashan]    论坛用户   登录
一、一个有16个字的数据区,起始地址70A0:DDF6,则这个数据区的末字单元的物理地址是多少


二、执行下面的指令后,AL中的内容是?
    BUF DW 1234H,5678H,0001H ;请告诉我DW的 详细 用法
    MOV BX,OFFSET BUT        ;还有OFFSET的用法
    XLAT

三、LENGTH和SIZE的 用法


你回答时请注明题号,先谢谢了

地主 发表时间: 04-02-19 10:45

回复: 286 [unique]   版主   登录
如果你想讨论,请先说出你的做法和想法,我们指出其中对或错。
如果你想让人帮你作题,无可奉告。

B1层 发表时间: 04-02-19 11:44

回复: dashan [dashan]   论坛用户   登录
题1我的做法是:16个字的长度为32字节,化为16进制为20H字节
              再DDF6+20=DE16    ,70A0+DE16-2=14EB4为所求,但答案不是这样的

题2:BUF DW 1234H,5678H,0001H ;DW用于定义字变量,但它怎么能一次把三个数传给BUF呢?
    MOV BX ,OFFSET BUF        ;请问这时BX中内容是多少
    XLAT                      ;这个我知道用法:((BX)+(AL))送AL
     

B2层 发表时间: 04-02-21 12:55

回复: 286 [unique]   版主   登录
题1我的做法是:16个字的长度为32字节,化为16进制为20H字节
              再DDF6+20=DE16    ,70A0+DE16-2=14EB4为所求,但答案不是这样的


前面作法都对,但70A0+DE16错了,段地址加偏址时,应该先左移一位再加。也就是应该
70A00+DE16。


题2:BUF DW 1234H,5678H,0001H ;DW用于定义字变量,但它怎么能一次把三个数传给BUF呢?
    MOV BX ,OFFSET BUF        ;请问这时BX中内容是多少
    XLAT                      ;这个我知道用法:((BX)+(AL))送AL

BUF DW XXXX,YYYY,ZZZZ表示的意思是:XXXX,YYYY,ZZZZ以DW的形式依次存入内存中,而不是三个值都存到一个字空间中,所以整个BUF占了6个字节的空间。其中BUF指向第一个。

第二个问题是初学者最容易错的地方,字在内存中,是“数的低位存地低位,高位存高位”(引号内的话好好想想),所以BUF内的内容应该是
34 12 78 56 01 00
move bx,offset buf  --->buf=1234H
move bl,offset buf  --->buf=34H.


B3层 发表时间: 04-02-23 09:31

回复: 286 [unique]   版主   登录
第三个题我忘了,你查书吧。

B4层 发表时间: 04-02-23 09:31

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号