80X86 汇编指令符号大全 +、-、*、/∶算术运算符。 &∶宏处理操作符。宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。 $∶地址计数器的值——记录正在被汇编程序翻译的语句地址。每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。 ?∶操作数。在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。 =∶等号伪指令——符号定义。对符号进行定义和赋值,功能与 EQU相似,但允许(重复)再定义。 :∶修改属性运算符(操作符)——段操作符。用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。注意,段寄存器CS和ES不能被跨越,堆栈操作时也不能跨越SS。 ;∶注释符号。 %∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。 ( )∶1.运算符——用来改变运算符的优先级别。2.教材符号,表示括号内存储单元(或寄存器)的内容。 < >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。 [ ]∶1.运算符。方括号括起来的数是数组变量的下标或地址表达式。带方括号的地址表达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;②BX或BP可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不允许BX和BP出现在同一个方括号内;③SI和DI可以单独出现在各方括号内,也可以与常数、BP或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内;④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。2.教材符号,表示其中的内容可省略。 .LIST∶ 伪指令。用于打开列表文件输出。 .RADIX∶伪指令。把缺省的基数改为2-16范围内的任意基数。.RADIX不影响DD、DQ、DT伪指令,在这些伪指令中,输入的数值只要没有加上数据类型就认为是十进制数。 .XLIST∶伪指令。用于关闭列表文件输出。 %OUT∶伪指令。在汇编时显示其后的信息。 AAA∶ 指令助记符——加法运算后的ASCII调整(非压缩的BCD码)。无操作数,调整的加法结果在AL中。AF和CF的状态改变说明结果大于9。检查AL的低四位是否为合法的BCD码(0-9),如果合法就清除AL的高四位以及AF和CF标志。当AL的低四位表示的数大于 9或AF=1时, 将AL加 6,AH加1 ,并使AF和CF置位,清除AL中的高四位。任何一个A—F之间的数加上6 以后,都会使AL低 4位产生0-9之间的数,从而达到调整的目的。 AAD∶ 指令助记符——除法的ASCII调整(非压缩的BCD码)。在执行除法操作前,必须利用 AAD指令将非压缩型 BCD码表示的数转换成二进制数送AL。步骤是,先将被除数的高位数(AH中的内容)乘以10,然后加到AL的低位数中,接着将AH清零。 AAM∶ 指令助记符——乘法的ASCII调整(非压缩的BCD码)。用于将字节乘法的积转换成两个合法的十进制非压缩码。AAM不带操作数,假定成绩在AH和AL中,并将调整后的非压缩码送回AH和AL。为了保证 AAM得到正确的结果,原乘数和被乘数必须是合法的非压缩码。指令执行时,AAM 用10(0AH) 除AL寄存器,并将除得的商和余数分别送AH和AL寄存器,实现转换。 AAS∶ 指令助记符——减法运算后的ASCII调整(非压缩的BCD码)。检查AL的低四位是否为合法的BCD码(0-9),如果合法就清除AL的高四位以及AF和CF标志。当AL的低四位表示的数大于 9或AF=1时, 将AL减 6,AH减1 ,并使AF和CF置1,清除AL中的高四位。 | |||
∙ | ADC∶ 指令助记符——带进位加法(把CF的值加上)。用于多字节数的高字节加法运算。 ADD∶ 指令助记符——加法。参与运算的二操作数应该同时带符号或不带符号 ,并且长度一致。操作数可以是寄存器、存储器或立即数,但不能同时为存储单元或段寄存器,立即数也不能作为目的操作数。 AF∶ Auxiliary汇编指令汇总 Carry Flag,辅助进位标志,在标志寄存器的第4字节。记录运算时第 3位(半个字节)产生的进位值(置1)。该标志用于对BCD码的加减运算中。 AND∶逻辑运算符(在语句的操作数部分,汇编时完成)或逻辑操作指令助记符(在语句的操作码部分,其运算在执行指令时完成)——按位与。只有相“与”的两位全为1 ,结果才为1。某数自己与自己相“与”,操作数不变,进位标志CF清0 。 ASSUME∶段定义伪指令——设定分段寄存器,格式为"ASSUME 段寄存器:段名[,段寄存器名:段名]"。在代码段的开始用来指出所有段与段寄存器的关系,确定某个段分配给哪个段寄存器。ASSUME只指出各段寄存器的分配,并没有把段地址装入相应的段寄存器。为此,在代码段中,还必须把数据段和附加数据段的段地址装入相应的寄存器中。 AT∶伪指令——段定义(组合类型)。该段按绝对地址定位,段基址为数值表达式的值,位移量为0 。不能指定代码段。 AX∶ Accumulator,通用寄存器,算术运算的主要寄存器。另外,所有的I/O指令都使用这一寄存器与外部设备传送信息。其中AH是高8位,AL是低8位。 B∶ 数据类型后缀,表示二进制常量。 BP∶Base Pointer, 基址指针寄存器。可以与SS寄存器联用来确定堆栈中任一存储单元的地址。它指示堆栈中任一单元的偏移量。非堆栈进出指令要访问堆栈,只能通过BP进行。 BX∶Base,通用寄存器。在计算存储器地址时,经常用作基址寄存器。其中BH是高 8位,BL是低 8位。 BYTE∶伪指令——段定义(定位类型)。本段起始单元可以从任一地址开始,段间不留空隙,存储器利用率最高。 CALL∶指令助记符——程序调用。 一、段内直接调用:格式为" CALL 过程名"。先把IP内容(子程序的返回地址,即CALL下一条指令的地址)压入堆栈,然后IP转移到子程序的入口地址。 二、段内间接调用:格式为" CALL WORD PTR OPD"。先把IP的内容压入堆栈,然后IP指向(转到)由寻址方式决定的EA。 三、段间直接调用。格式为"CALL FAR PTR 过程名"。先把CS和IP的内容压入堆栈,然后在CS中装入新的段地址,IP指向段内偏移地址。 四、段间间接调用:格式为"CALL DWORD PTR OPD"。 先把CS和IP的内容压入堆栈,然后把寻址方式确定的有效地址所指定的一个字储存单元的内容送入IP,下一个字存储单元的内容(段首址)送入CS。 CBW∶指令助记符——字节转换为字。把AL中字节的符号扩展到AH中,若(AL)的最高有效位为0 ,则(AH)=00;若(AH)的最高有效位为1, 则(AH)=0FFH。 CF∶Carry Flag,进位标志,在标志寄存器的第0字节 ,记录运算时从最高有效位产生的进位值(置1)。 作加法时,CF位可以用来表示无符号数的溢出(有符号数溢出用OF表示)。 CLC∶ 指令助记符——标志(进位)设置。设置CF=0。 CLD∶ 指令助记符——清方向标志。使DF=0 。这样,当执行字节串操作指令时,地址自动增1 ;当执行字串操作指令时,地址自动增2 。 CLI∶ 指令助记符——中断允许标志设置。设置IF=0 。 CMC∶ 指令助记符——标志(进位)设置。CF取反。 CMP∶ 指令助记符——比较。对于“ CMP AX,BX” ,如果是两个无符号数比 较(减),若结果没有产生借位,即CF=0, 则(AX)≥(BX);若CF= 1,则(AX)〈(BX)。 如果是两个带符号数比较,则 当没有溢出(OF=0)时,若SF=0,则(AX)〉(BX) 若SF=1,则(AX)〈(BX) 当产生溢出(OF=1)时,若SF=0,则(AX)〈(BX) 多SF=1,则(AX)〉(BX) 简炼的结论,若 OF 异或 SF=0,则(AX)〉(BX) 若 OF 异或 SF=1,则(AX)〈(BX) | ||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论