汇编知识总结.docx

上传人:b****6 文档编号:6391558 上传时间:2023-01-06 格式:DOCX 页数:14 大小:3.01MB
下载 相关 举报
汇编知识总结.docx_第1页
第1页 / 共14页
汇编知识总结.docx_第2页
第2页 / 共14页
汇编知识总结.docx_第3页
第3页 / 共14页
汇编知识总结.docx_第4页
第4页 / 共14页
汇编知识总结.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编知识总结.docx

《汇编知识总结.docx》由会员分享,可在线阅读,更多相关《汇编知识总结.docx(14页珍藏版)》请在冰豆网上搜索。

汇编知识总结.docx

汇编知识总结

寄存器

标志寄存器

1、进位标志CF(CarryFlag)

进位标志CF主要用来反映运算是否产生进位或借位。

如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

使用该标志位的情况有:

多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

2、奇偶标志PF(ParityFlag)

奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。

如果“1”的个数为偶数,则PF的值为1,否则其值为0。

3、零标志ZF(ZeroFlag)

零标志ZF用来反映运算结果是否为0。

如果运算结果为0,则其值为1,否则其值为0。

在判断运算结果是否为0时,可使用此标志位。

4、符号标志SF(SignFlag)

符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。

在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。

运算结果为正数时,SF的值为0,否则其值为1。

5、溢出标志OF(OverflowFlag)

溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

字节是最基本的寻址单位,一个字等于多个字节,一般一个字等于两个字节16位。

逻辑地址

逻辑地址由段基地址和偏移地址组成,段基地址确定段在主存中的起始地址,偏移地址是相对于段基地址进行定义。

用“:

”分割段基地址和偏移地址,例如CS:

EIP,CS指当前段,EIP指向下一条要执行的指令。

语句格式

●标号和名字

1.表达处理器执行的语句称为执行性语句(真指令,硬指令)。

2.表达汇编语言命令的语句称为说明性语句(伪指令)。

3.标识符最多由31个字母、数字、及规定的特殊符号组成,但不能以数字开头,不能是汇编语言的保留字,汇编语言不区分大小写。

●助记符

助记符是帮助记忆指令的符号,反映指令的功能。

例如调用指令call,以及字节变量定义伪指令byte。

●操作数和参数

双操作数中目的操作是写在逗号前面,逗号后面的为源操作数。

●注释和分隔符

分号“;”为注释符,续行符“\”表示本行内容与上一行内容同属于一个语句。

源程序框架

includeio32.inc

.data;数据区

.code;代码区

start:

;主程序

exit0

;子程序

endstart

变量定义

Byte字WORD字节DWORD双字FWORD三字QWORD四字TBYTE10个字节

重复次数DUP(重复参数)例如BVAR4byte5dup(‘$’)

●数据存储方式

小端方式“低对低高对高”大端方式“高对低低对高”

●ALIGN伪指令

AlignNN为对齐的边界,为偶数。

如果当前位置为0101H,ALIGN2则为0102开始,下一个位置为0104,如果是align4,则从0104开始,下一个位置为0108.

常用的地址、类型操作符

Byte返回一个数值,表明多少个字节。

SIZEOF=TYPE*LENGTHOF。

数据寻址方式

由于指令系统设计了多种操作数的来源,寻找操作数的过程就是操作数的寻址,不同的寻址方式执行的速度和效率不一样。

注意两个操作数字长要一致

1.立即寻址方式MOVAX,5(直接给出操作数)

2.寄存器寻址方式MOVAX,BX(在寄存器中给出操作数,CS指令不能用MOV改变)

3.直接寻址方式MOVAX,VALUE或MOVAX,[VALUE]或MOVAX,[2000H](直接给出有效地址,在内存中寻找操作数,隐含段为DS,可使用段跨越前缀指定其它段)

4.寄存器间接寻址方式MOVAX,[BX](有效地址在寄存器中,不允许使用AX/CX/DX存放有效地址)

5.寄存器相对寻址方式MOVAX,COUNT[SI]或MOVAX,[COUNT+SI](可用寄存器BX/BP/SI/DI)

6.基址变址寻址方式MOVAX,[BX][SI](必须是一个基址寄存器和一个变址寄存器的组合)

7.相对基址变址寻址方式MOVAX,MASK[BX][SI]

8.比例变址寻址方式MOVEAX,ARRAY[ESI*4]

9.基址变址寻址方式MOVEAX,[EBX][ESI*6]

10.相对比例变址寻址方式MOVEAX,ARRAY[EBX][ESI*8]

通用数据处理指令

1.Mov指令

目的操作数和源操作数类型要相同,否则用ptr。

立即数和寄存器间接寻址都没有明确的操作数类型,所以必须要确定其中一个的类型。

不允许两个操作数都是存储单元。

2.XCHG指令

可以是寄存器与寄存器,可以是寄存器与主存。

不允许两个操作数都是存储单元。

3.堆栈操作

PushR/M/S/I

PopR/M/S

4.地址传送指令

LEAR16/R32,MEM相当于Movr16/r32,offsetMEM

算数运算类指令

CF是为无符号整数运算设计的,OF是为有符号证书运算设计的

1.加法指令

ADD/ADC/INC(除INC不影响CF标志外,都对条件标志位有影响)

两个操作数不能都为变量

ADC表示带上进位标志中的值,1或0.

2.减法指令

SUB/SBB/NEG/CMP (除DEC不影响CF标志外,都对条件标志位有影响)

SBB表示带上进位标志中的值,1或0.

NEG将操作数取反加一(求补),在16位汇编语言中,NEG命令无论你是否为正负数,都会按照取反+1或用0减去这个数的二进制的办法去计算

3.比较指令

Cmp差值不回送,但依据运算结果影响标志位(SUB的变形)。

4.乘法指令

5.除法指令

6.符号位扩展

符号位扩展只改变数据长度,并没有改变数据大小。

逻辑运算

NOT/AND/OR/XOR/TEST,TEST不返回结果,只改变标志位。

移位指令

条件转移指令

循环指令

LOOP隐含使用ECX作为计数器,每执行一次LOOP,ECX减1,直到ECX为0便退出循环。

但是当ECX本来就是0时会出现“无限”循环。

过程定义伪指令

过程名proc

……….;过程体

过程名endp

子程序的调用用Call,子程序中要记得保持堆栈平衡,不能忘记在子程序中写好ret。

不带任何参数时,用于在子程序的结束位置,被调用的子程序必须有ret指令,否则调用没有ret指令的子程序会导致自陷,子程序执行完之后处于失控状态。

带参数retn表示子程序返回主程序的同时,堆栈弹出n个字节(栈顶指针减n)

●参数传递方法

1.寄存器传递参数

2.共享变量传递参数

3.堆栈传递参数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1