指令是CPU操作的基本单位,每条指令执行一个特定的操作。可以理解为:指令通知CPU执行某种操作的“命令”。CPU全部指令的集合,称为指令集
机器指令:二进制格式编码的序列(一串0,1SEO靠我代码书写)。注意:硬件只能识别,存储,运行机器指令符号指令:用字符串形式的序列(包含字符串形式的操作码以及操作数助记符)
2. DW:字定义伪指令
功能:通知汇编程序把DW后跟的双字节数,依次存入从变量名开始的单元,每一个数,SEO靠我占两个字节,存放时满足小端法规则,即:低字节->低地址单元,高字节->高地址单元。3. DD:双字定义伪指令
变量名 DD 一串用逗号间隔的4字节数功能:将数据存放到计算机中的内存单元时,负数按照补码存SEO靠我放,单引号中的字符翻译成ASCII码 符号定义伪指令 EQU:等值伪指令 NUM EQU 33 MOV AL,NUM ;该指令与下条SEO靠我指令等价 MOV AL,33 =:等号伪指令 NUM = 33 功能:定义符号常数NUM的值为333.EQU和=区别
用EQU定义的符号SEO靠我常数,其值在后句语句中不能更改用=定义的符号常数,其值在后继语句中可以重新定义堆栈————计算机中的堆栈是人为设置的一片连续内存区,用来存放数据,所存数据按先进后出规律存取
栈顶:栈区的低地址
栈底:栈区的高地址堆栈寄存器SS:存SEO靠我放堆栈段段基址堆栈指针(SP):存放栈顶单元的偏移地址
堆栈指针SP的初值决定了堆栈的大小,SP始终指向栈顶的顶部,及始终指向最后压入堆栈的信息所在的单元 数据进出栈 入SEO靠我栈PUSH PUSH src;(先移后入) 一个字进栈,系统自动完成两步操作:SP←SP-2,(SP)←操作数; 一个双字进栈,系统自动完成两步操作:ESEO靠我SP←ESP-4,(ESP)←操作数。 出栈POP POP dst;(先出后移) 弹出一个字,系统自动完成两步操作:操作数←(SP),SP←SP+2;SEO靠我 弹出一个双字,系统自动完成两步操作:操作数←(ESP),ESP←ESP+4。注意:堆栈操作指令中的操作数类型必须是字操作数,即16位操作数
二进制加法 SEO靠我 ADD:不带进位加法指令 ADD 目标操作数(dst),源操作数(src) ;dst <- dst+src功能:将目的操作数与源操作数相加,并将结果送给目的操作数 SEO靠我 ADC:带进位加法指令 ADC 目标操作数(dst),源操作数(src) ;dst <- dst+src+CF功能:将目的操作数与源操作数相加,再加上进位标SEO靠我志CF的内容,然后将结果送给目的操作数 INC:加一指令 INC 目标操作数(dst) ;dst <- dst+1功能:将目的操作数加一,并将结果送回SEO靠我目的操作数。 二进制减法
1.SUB:不带借位减法指令 SUB 目标操作数(dst),源操作数(src) ;dst <- dst-src;功能:将目的操作数减源SEO靠我操作数,结果送回目的操作数。2.SBB:带借位减法指令
SBB 目标操作数(dst),源操作数(src) ;dst <- dst-src-CF;功能:将目的操作数减源操作数,然后再减进位标志CF,并将结SEO靠我果送回目的操作数。 DEC:减一指令 DEC 目标操作数(dst) ;dst <- dst-1功能:将目的操作数减一,结果送回目的操作数。 SEO靠我 求补指令
NEG:求补指令 NEG 目标操作数(dst) ; dst <- 0-dst功能:用0减去目的操作数,结果送回原来的目的操作数。 SEO靠我 比较指令
CMP:比较指令 CMP 目标操作数(dst),源操作数(src) ;dst-src功能:将目的操作数减源操作数,但结果不送回目的操作数。 乘法指令 SEO靠我 MUL:无符号数乘法指令 MUL src ;(AX)<-(src)*(AL)功能:将源操作数与默认的目的操作数(AX或AL)相乘,结果保存在AX或DX,AX中。 SEO靠我 IMUL:带符号数乘法指令 IMUL src ;功能:将源操作数与默认的目的操作数(AX或AL)相乘,结果保存在AX或DX,AX中。说明:运算结果只影响状态标志CF,OF; SEO靠我 除法指令 DIV:无符号数除法指令 DIV src ;(AL)<-(AX)*(src) (商) (AH) <- 余数功能:将两个无符号数做除法运算,商和SEO靠我余数分别保存在指定位置。 IDIV:带符号数除法指令 IDIV src 功能:将两个带符号数做除法运算,商和余数分别保存在指定位置。说明:当被除数位不够时,需要进行扩SEO靠我展。 字节扩展指令 CBW功能:把AL中的带符号数扩展为16位字长(符号位扩展到AH中)。 字扩展指令 CWD功能:将AX中的符号位SEO靠我扩展到DX中按照转移条件分:无条件转移和有条件转移 有符号条件转移
循环控制转移
按照转移范围分:段内转移和段间转移按照获取转移地址的方法分:直接转移和间接转移
子程序:能完成一定功能的相对独立的程序段
调用:调用子程序,即无条件转到子程序的第一条指令
返回:返回断点,即返回到CALL的SEO靠我后继指令
段内调用CALL指令 段内直接调用:主程序和子程序待在同一代码段中 CALL 过程名 段内间接调用 CALL 寄存器操作数CASEO靠我LL 内存操作数 子程序(汇编语言)的过程定义语句 过程名 PROC 属性子程序实体RET过程名 ENDP过程名:子程序名,以字母开头,经汇编之后,过程名就是子程序的SEO靠我第一条指令
PROC/ENDP:是子程序的定界语句
属性: NEAR(或缺省)代表近过程,即该子程序和调用它的那条指令在同一个代码段。
FAR代表远过程,即该子程序和调用它的那条指令不在同一个代码段。
RETSEO靠我:RET子程序返回指令
网站备案号:浙ICP备17034767号-2