标题:自学汇编,问几个自己不懂的问题~希望得到大家的帮助
只看楼主
shuiruo007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-25
结帖率:100%
已结贴  问题点数:20 回复次数:7 
自学汇编,问几个自己不懂的问题~希望得到大家的帮助
1、将结果数据取偏移地址送DI  ,自己看到有两条指令
 LEA  DI,RESULT  
 MOV  DI,OFFSET  RESULT
 Q:这两条指令的作用是完全相同的吗?是否可以相互替换。
2、DI 和[DI] 有什么区别?希望能举例说明。
3、书上解释MOVSB指令以±1形式修改偏移地址,我在看书的过程中发现 例题的程序解释为 修改偏移地址+1.
   Q:如何判断+1和-1的情况,或者说不需要判断?
4、有一个程序题目是判断16个10位二进制数是否小于等于200H。但是在程序编写过程中给出了下面几条指令
PRO:   MOV  AH,BYTE PTR SOURCE[BX]
       MOV  AL,BYTE PTR SOURCE[BX+1]
       CMP  AX, 8000H
 Q: 程序中对AX和8000H 进行比较,是书本的错误,还是因为数值移位,所以要写8000H?
5、有符号条件转移和无符号条件转移在什么场合下要进行区别?书上对于带符号条件数的转移采用了一个表格,表格说明中这样写到:
   JG/JNLE      高于/低于且不等于时转移
   JGE/JNL      高于或等于/低于时转移
   JL/JNGE      高于/低于时转移
 我现在对这几个解释十分的不了解,比如第二个  高于或等于/低于时转移   那不是包含和所以的情况嘛,岂不是成了任何情况下都会转移?我知道我的理解有问题,所以希望前辈们指正。
   最后我想问,条件转移指令多而复杂,要全部记下来有很大的困难,而且很容易混淆,请问前辈们有什么实用的区分方法?希望能不吝赐教。谢谢大家~~~
 
搜索更多相关主题的帖子: 程序编写 希望 二进制 如何 
2013-03-28 13:50
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:20 
1、将结果数据取偏移地址送DI  ,自己看到有两条指令
LEA  DI,RESULT
MOV  DI,OFFSET  RESULT
Q:这两条指令的作用是完全相同的吗?是否可以相互替换。

A: offset是伪指令 是在编译的时候决定的 lea是指令 是运行的时候决定 对初学者来说可以认为是一样的

2、DI 和[DI] 有什么区别?希望能举例说明。
A:
mov ax, di ;di的值放到ax里
mov ax, [di] ;di所指向的内存里面的值放ax里 这里就相当于C语言里面的指针

3、书上解释MOVSB指令以±1形式修改偏移地址,我在看书的过程中发现 例题的程序解释为 修改偏移地址+1.
   Q:如何判断+1和-1的情况,或者说不需要判断?

A: 一般用递增 但也可以用递减 符号位控制 我看的书上就有
字符串操作指令
字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的。字符串操作指令可对内存单元按字节、字或双字进行处理,并能根据操作对象的字节数使变址寄存器SI(和DI)增减1、2或4。具体规定如下:
(1)、当DF=0时,变址寄存器SI(和DI)增加1、2或4;
(2)、当DF=1时,变址寄存器SI(和DI)减少1、2或4。


4、有一个程序题目是判断16个10位二进制数是否小于等于200H。但是在程序编写过程中给出了下面几条指令
PRO:   MOV  AH,BYTE PTR SOURCE[BX]
       MOV  AL,BYTE PTR SOURCE[BX+1]
       CMP  AX, 8000H
Q: 程序中对AX和8000H 进行比较,是书本的错误,还是因为数值移位,所以要写8000H?

A: 牵扯有符号数在计算机中的补码表示方法 具体你看其他的书罢 简单来说 对于有符号数 比如字(word) 负数的最高位也就是符号位是1 换算过来就是8000H到0FFFFh之间的那些数 8000H 就是二进制的 1000 0000 0000 0000 这个是常识 建议你看其他书学习一下

5、有符号条件转移和无符号条件转移在什么场合下要进行区别?书上对于带符号条件数的转移采用了一个表格,表格说明中这样写到:
   JG/JNLE      高于/低于且不等于时转移
   JGE/JNL      高于或等于/低于时转移
   JL/JNGE      高于/低于时转移
我现在对这几个解释十分的不了解,比如第二个  高于或等于/低于时转移   那不是包含和所以的情况嘛,岂不是成了任何情况下都会转移?我知道我的理解有问题,所以希望前辈们指正。

A:
你理解的不对 书上的意思是 JGE是 高于或等于时转移 JNL 是 低于时转移 分开写了而已

   最后我想问,条件转移指令多而复杂,要全部记下来有很大的困难,而且很容易混淆,请问前辈们有什么实用的区分方法?希望能不吝赐教。谢谢大家~~~

A:
和其他指令一样 根据英语来记 比如jne 就是 Jump Not Equal jge就是 Jump Greater or Equal 当然 如果你看不懂这几个英语词建议去学学基本英语罢 高中英语水平是必须的。。。


[ 本帖最后由 zklhp 于 2013-3-28 14:27 编辑 ]
2013-03-28 14:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
学习很认真 提的问题也很好 但有些问题 比如那个方向位的问题 其实书上应该是说过 希望你认真看书

祝学习顺利
2013-03-28 14:35
shuiruo007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-25
得分:0 
回复 2楼 zklhp
谢谢版主
还有一点不大明白
1PRO:   MOV  AH,BYTE PTR SOURCE[BX]     ; 10位无符号二进制数高八位
       MOV  AL,BYTE PTR SOURCE[BX+1]   ; 10位无符号二进制数低二位
       CMP  AX, 8000H
   他这里描述的是10位无符号数,是否就不用补码表示了?结果还是8000H?
最后英文我还是懂点的..非常惭愧的说,我被大学上了....
2013-03-28 14:59
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用shuiruo007在2013-3-28 14:59:20的发言:

谢谢版主
还有一点不大明白
1PRO:   MOV  AH,BYTE PTR SOURCE     ; 10位无符号二进制数高八位
       MOV  AL,BYTE PTR SOURCE   ; 10位无符号二进制数低二位
       CMP  AX, 8000H
   他这里描述的是10位无符号数,是否就不用补码表示了?结果还是8000H?
最后英文我还是懂点的..非常惭愧的说,我被大学上了....

具体情况具体分析罢 我也不知道代码是啥 你单独开个贴分析一下 那样你分析的对不对大家都能看到 讨论一下也是好的嘛

既然上了大学就要好好学习 争取有所提升 祝好运

记得要结题哦
2013-03-28 15:23
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
z版费如此大力气讲贴,我就不跟着抢分了

我是来学习的

DO IT YOURSELF !
2013-03-28 15:24
shuiruo007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-25
得分:0 
回复 5楼 zklhp
好的,谢谢啦
2013-03-28 15:40
meiyounichen
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:29
注 册:2012-12-31
得分:0 
回复 楼主 shuiruo007
自学汇编的妹纸,赞一个
2013-03-30 19:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402158-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020790 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved