没有合适的资源?快使用搜索试试~ 我知道了~
OD使用命令
需积分: 0 104 下载量 185 浏览量
2012-07-27
14:34:22
上传
评论
收藏 132KB DOC 举报
温馨提示
试读
18页
OD使用命令
资源详情
资源评论
资源推荐
总结:笔记 日后查看
常用汇编命令+OD 使用命令 总结笔记
2012-2-26 14:22 上传
下载附件 (64.73 KB)
汇编
32 位 CPU 所含有的寄存器有:
4 个数据寄存器(EAX、EBX、ECX 和 EDX)对低 位数据的存取,不会影响高 位的
数据。这些低 位寄存器分别命名为:、、 和 ,它和先前的 中的寄存
器相一致。 个 位寄存器又可分割成 个独立的 位寄存器:、:
、:、:,每个寄存器都有自己的名称,可独立存取。
寄存器 通常称为累加器用累加器进行的操作可能需要更少时间。
可用于乘、 除、输入输出等操作,使用频率很高;
寄存器 称为基地址寄存器 !它可作为存储器指针来使用;
寄存器 称为计数寄存器" !在循环和字符串操作时,要用它来控制循
环次数;在位操作中,当移多位时,要用 来指明移位的位数;
寄存器 称为数据寄存器 !在进行乘、除运算时,它可作为默认的操
作数参与运算,也可用于存放 #$ 的端口地址
注意:在 位 中,、、 和 不能作为基址和变址寄存器来存放存储单元
的地址,
在 %& 位 中,其 %& 位寄存器 、、 和 不仅可传送数据、暂
存数据保存算术逻辑运算结果,
2 个变址和指针寄存器(ESI 和 EDI)其低 位对应先前 中的 '# 和 #,对低 位
数据的存取,不影响高 位的数据。寄存器 ESI、EDI、SI 和 DI 称为变址寄存器
(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存
储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
2 个指针寄存器(ESP 和 EBP)其低 位对应先前 中的 和 ',对低 位数据的
存取,不影响高 位的数据。%& 位 有 & 个 %& 位通用寄存器 和 '。它们主
要用于访问堆栈内的存储单元。寄存器 、'、 和 ' 称为指针寄存器!"
!,主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻
址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成 位寄存器。
作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
为基指针!"寄存器,用它可直接存取堆栈中的数据
' 为堆栈指针'(!"寄存器,用它只可访问栈顶
6 个段寄存器(ES、CS、SS、DS、FS 和 GS)段寄存器 段寄存器是根据内存分段的管理
模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成
的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
内部的段寄存器:
'))代码段寄存器*' " !,其值为代码段的段值;
'))数据段寄存器' " !,其值为数据段的段值;
'))附加段寄存器+' " !,其值为附加数据段的段值;
''))堆栈段寄存器'(' " !,其值为堆栈段的段值;
,'))附加段寄存器+' " !,其值为附加数据段的段值;
-'))附加段寄存器+' " !,其值为附加数据段的段值。
1 个指令指针寄存器(EIP)指令指针 #、##"!"!"是存放下次将要执行
的指令在代码段的偏移量。
1 个标志寄存器(EFlags)
、进位标志 ,.,
进位标志 , 主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个
进位或借位,那么,其值为 ,否则其值为 /。使用该标志位的情况有:多字字节数的加
减运算,无符号数的大小比较运算,移位操作,字字节之间移位,专门改变 , 值的指令
等。
&、奇偶标志 ,!.,
奇偶标志 , 用于反映运算结果中“0的个数的奇偶性。如果“0的个数为偶数,则 , 的值
为 ,否则其值为 /。利用 , 可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程
中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。
%、辅助进位标志 ,+!!..,
在发生下列情况时,辅助进位标志 , 的值被置为 ,否则其值为 /:
、在字操作时,发生低字节向高字节进位或借位时;
&、在字节操作时,发生低 位向高 位进位或借位时。
对以上 个运算结果标志位,在一般编程情况下,标志位 ,、1,、', 和 $, 的使用频率
较高,而标志位 , 和 , 的使用频率较低。
、零标志 1,1,
零标志 1, 用来反映运算结果是否为 /。如果运算结果为 /,则其值为 ,否则其值为 /。
在判断运算结果是否为 / 时,可使用此标志位。
2、符号标志 ','! ",
符号标志 ', 用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,
有符号数采用码表示法,所以,', 也就反映运算结果的正负号。运算结果为正数时,',
的值为 /,否则其值为 。
、溢出标志 $,$345,
溢出标志 $, 用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算
位数所能表示的范围,则称为溢出,$, 的值被置为 ,否则,$, 的值被清为 /。
6溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组
成原理》课程中的有关章节。
二、状态控制标志位
状态控制标志位是用来控制 操作的,它们要通过专门的指令才能使之发生改变。
、追踪标志 7,78,
当追踪标志 7, 被置为 时, 进入单步执行方式,即每执行一条指令,产生一个单步
中断请求。这种方式主要用于程序的调试。
指令系统中没有专门的指令来改变标志位 7, 的值,但程序员可用其它办法来改变其值。
&、中断允许标志 #,#"8"9,
中断允许标志 #, 是用来决定 是否响应 外部的可屏蔽中断发出的中断请求。
但不管该标志为何值, 都必须响应 外部的不可屏蔽中断所发出的中断请求,以
及 内部产生的中断请求。
具体规定如下:
、当 #,: 时, 可以响应 外部的可屏蔽中断发出的中断请求;
&、当 #,:/ 时, 不响应 外部的可屏蔽中断发出的中断请求。
的指令系统中也有专门的指令来改变标志位 #, 的值。
%、方向标志 ,!!",
方向标志 , 用来决定在串操作指令执行时有关指针寄存器发生调整的方向。具体规定在
第 2;&; 节——字符串操作指令——中给出。
在微机的指令系统中,还提供了专门的指令来改变标志位 , 的值。
汇编指令:常用
<$=传送字或字节;
<$='先符号扩展>再传送;
<$=1先零扩展>再传送;
'把字压入堆栈;
$把字弹出堆栈;
'把 >>>>'>>'#># 依次压入堆栈;
$把 #>'#>>'>>>> 依次弹出堆栈;
'把 >>>>'>>'#># 依次压入堆栈;
$把 #>'#>>'>>>> 依次弹出堆栈;
-交换字或字节;至少有一个操作数为寄存器>段寄存器不可作为操作数
<-比较并交换操作数;第二个操作数必须为累加器
先交换再累加;结果在第一个操作数里
加法;
带进位加法;
#?加 ;
加法的 '## 码调整;
加法的十进制调整;
'减法;
'带借位减法;
减 ;
?求反以 /减之;
<比较;两操作数作减法>仅修改标志位>不回送结果;
'减法的 '## 码调整;
'减法的十进制调整;
<无符号乘法;
#<整数乘法;
<乘法的 '## 码调整;
#=无符号除法;
##=整数除法;
除法的 '## 码调整;
@字节转换为字;把 中字节的符号扩展到 中去
@字转换为双字;把 中的字的符号扩展到 中去
@字转换为双字;把 中的字符号扩展到 中去
A双字扩展;把 中的字的符号扩展到 中去
逻辑运算指令
?与运算;
剩余17页未读,继续阅读
dspcan
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 国家(双边)、各省、19个行业FDI+OFDI数据(1970-2020)
- 海尔统帅电视刷机数据 T50FUR 机编600000MX900 配屏V500HJ1-PE8(C7) 务必确认机编一致 强制刷机包
- 2021-2009年中国省市自贸区设立数据(已经匹配好上市公司,可以直接做DID)
- STM32F103C8T6最小系统板原理图,PCB文件ad版本Altium Designer版本工程文件
- 地磁计 电子罗盘QMC5883 HMC5883程序 差异对比
- 汉诺塔c语言递归.pdf
- 整理1989-2020年全国以及各地区人口平均受教育年限面板数据
- mybatis jar包
- 77777777777777777
- Jlink找不到复旦微设备
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0