首页
社区
课程
招聘
[求助]关于汇编的几个问题
发表于: 2006-5-23 16:44 6773

[求助]关于汇编的几个问题

2006-5-23 16:44
6773
各位大虾,在下在学DOS汇编时,遇到了几个问题,具体如下:
1.关于非压缩的调整指令(AAA、AAS、AAM、AAD)的用法及用途;
2.关于逻辑右移(SHR)、算术右移(SAR)、循环右移(ROR)及带进位循环右移(RCR)4条指令的区别。
3.关于(HLT、WAIT、ESC、LOCK)4条处理机控制指令的用法及用途。

虽然在8086的汇编书上有介绍这些指令,但却介绍的很浅,有的甚至是一带而过。但本人非常想弄清楚这几个问题。希望各位大虾不吝赐教。万分感谢。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没有人回答啊?
2006-5-23 18:25
0
雪    币: 50
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不会是网上下载的书吧.
书里还是有介绍的.最好是用到那学到那.纯粹比较不好记忆的
2006-5-23 19:33
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题是我现在就想使用这些指令啊。书是学校发的书。
2006-5-23 21:20
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
5
传你个教程:
分卷1:
上传的附件:
2006-5-23 21:41
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
6
分卷2:
上传的附件:
2006-5-23 21:41
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
TO:ForEver
你怎么传这个教程给我啊。我只想知道我提出的那几个问题啊。
而且我也下载了你的这个教程。和我们发的书还不差不多啊。
2006-5-23 22:16
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
8
教程里每条指令下面都有解释和例子。如果你认真读了,你应该明白这些指令都是干什么的。
简单解释一下:
1.关于非压缩的调整指令(AAA、AAS、AAM、AAD)的用法及用途;
    这些指令用于调整BCD码运算的结果。直接的两个BCD码运算后能结果是二进制形式,要调整到BCD形式就需要这些指令。

2.关于逻辑右移(SHR)、算术右移(SAR)、循环右移(ROR)及带进位循环右移(RCR)4条指令的区别。
   看指令说明。

3.关于(HLT、WAIT、ESC、LOCK)4条处理机控制指令的用法及用途
   ESC不清楚,其他看指令说明。

如果你看不懂这些,建议你先看一下计算机原理之类的书。
2006-5-23 23:17
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
既然你会,为什么就不愿意直接说一下呢?
2006-5-24 09:46
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
10
其实你自己看一下书就知道了。为什么还要问呢?
2006-5-24 10:21
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我都已经说了看书看不懂,所以才问的。你自己看看你跟贴跟了多少个了。如果你在跟第一次贴时就帮我讲解一下,恐怕字数也没有你现在这么多吧?
2006-5-24 12:08
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
12
最初由 莫取网名 发布
我都已经说了看书看不懂,所以才问的。你自己看看你跟贴跟了多少个了。如果你在跟第一次贴时就帮我讲解一下,恐怕字数也没有你现在这么多吧?


2006-5-24 12:23
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
13
最初由 莫取网名 发布
各位大虾,在下在学DOS汇编时,遇到了几个问题,具体如下:
1.关于非压缩的调整指令(AAA、AAS、AAM、AAD)的用法及用途;
2.关于逻辑右移(SHR)、算术右移(SAR)、循环右移(ROR)及带进位循环右移(RCR)4条指令的区别。
3.关于(HLT、WAIT、ESC、LOCK)4条处理机控制指令的用法及用途。

........

   

算术运算指令都是针对二进制数进行操作的指令,但对绝大多数人来说,十进制是最简单、熟悉的。为了方便按十进制数进行算术运算,指令系统专门提供了一组十进制运算调整指令。

虽然人们会觉得按十进制进行算术运算很自然,但计算机要化更多的时间来完成相应操作。在通常情况下,这组指令很少被程序员运用在实际的程序之中。所以,这组指令的使用率较低,可以根据需要有选择性地学习。

1、ASCII码加调整指令AAA(Ascii Adjust After Addition)

该指令是用于调整AL之值,该值是二个ASCII码字节相加之和。具体的调整规则如下:

、若AL的低四位大于9,或标志位AF=1,则,AH=AH+1,AL=AL+6,并置AF和CF为1,否则,只置AF和CF为0;
、清除AL的高四位。

SHL-SHR:为一组模式.看图类比吧

此组指令有:逻辑左移SHL(Shift Logical Left)和逻辑右移SHR(Shift Logical Right)。它们的指令格式如下:

SHL/SHR Reg/Mem, CL/Imm

受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。

逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0

ROL-ROR:为一组模式.看图类比

循环移位指令有:循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。

指令的格式:ROL/ROR Reg/Mem, CL/Imm

受影响的标志位:CF和OF

循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位

暂停HLT(Enter Halt State Instruction)

在等待中断信号时,该指令使CPU处于暂停工作状态,CS:IP指向下一条待执行的指令。当产生了中断信号,CPU把CS和IP压栈,并转入中断处理程序。在中断处理程序执行完后,中断返回指令IRET弹出IP和CS,并唤醒CPU执行下条指令。
指令的格式:HLT

(DOS下这个是中断指令,32位win2000这些指令为特权指令,ring0下才能执行)
比如DOS下用这个指令,然后等待串口送数据.老的玩DOS汇编对这些都很熟悉,现在是开发驱动的才玩这些指令了.win2000下不给ring3的程序随便使用这些指令.

类比这些都是一些CPU的中断指令.不知道中断的话,你最好看看8086的硬件概念再来学汇编了.中断在DOS下是基本概念,而现在中断被操作系统屏蔽了.

如果这样都看不懂,估计没有人会教你了.

2006-5-24 13:05
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 紫色缘 发布


这位兄台还请勿见笑啊。在下确实是一个菜鸟。
2006-5-24 13:25
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 hnhuqiong 发布
算术运算指令都是针对二进制数进行操作的指令,但对绝大多数人来说,十进制是最简单、熟悉的。为了方便按十进制数进行算术运算,指令系统专门提供了一组十进制运算调整指令。

虽然人们会觉得按十进制进行算术运算很自然,但计算机要化更多的时间来完成相应操作。在通常情况下,这组指令很少被程序员运用在实际的程序之中。所以,这组指令的使用率较低,可以根据需要有选择性地学习。

1、ASCII码加调整指令AAA(Ascii Adjust After Addition)
........


谢谢这位兄台。
2006-5-24 13:26
0
雪    币: 203
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
学习了!
你输入的信息太短,至少要6个汉字。
2006-5-24 13:36
0
雪    币: 2506
活跃值: (1025)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
17
最初由 莫取网名 发布
我都已经说了看书看不懂,所以才问的。你自己看看你跟贴跟了多少个了。如果你在跟第一次贴时就帮我讲解一下,恐怕字数也没有你现在这么多吧?

你这样的态度不太好吧?ForEver 给你发了教程,并也给你做了解答,可能对你来说他的解答不能令你满意,但你这样说话是不是太让人寒心了?对于给予了自己帮助的人,不管效果如何,我们首先应该感谢人家,而不是抱怨别人解答的不好。谁也没有义务必须回答你的问题,对于那些热心给予回复的朋友,我们首先是感谢别人,而不是像你这样对别人表示不满。如果你以后还是这个态度的话,估计能给你回复的人将会越来越少。
2006-5-24 14:00
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
18
最初由 莫取网名 发布
这位兄台还请勿见笑啊。在下确实是一个菜鸟。


我并不是笑你 是菜鸟,因为我也是菜鸟。

只是你那态度问题,让人一时难以接受
2006-5-24 14:40
0
雪    币: 6
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
最初由 CCDebuger 发布
你这样的态度不太好吧?ForEver 给你发了教程,并也给你做了解答,可能对你来说他的解答不能令你满意,但你这样说话是不是太让人寒心了?对于给予了自己帮助的人,不管效果如何,我们首先应该感谢人家,而不是抱怨别人解答的不好。谁也没有义务必须回答你的问题,对于那些热心给予回复的朋友,我们首先是感谢别人,而不是像你这样对别人表示不满。如果你以后还是这个态度的话,估计能给你回复的人将会越来越少。


在下错了。为我前面的言行而表示深深的歉意。
FOREVER兄,非常抱歉。
2006-5-24 15:22
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
20
没关系的。给你传个书是希望你查着方便。另外我解释也不过是从书里照搬而已。索性就把书传给你了。我是懒人,莫见怪。
2006-5-24 17:02
0
游客
登录 | 注册 方可回帖
返回
//