如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
8086CPU的指令系统与汇编语言程序设计本章内容汇编语言程序的格式学习目的掌握每条8086指令的格式、功能及用法。了解汇编语言程序的基本格式,及其上机过程。4.18086CPU的指令格式与寻址方式指令系统(InstructionSystem):4.1.2指令包含的基本内容及格式操作数的来源可以是:3.操作结果的去向指令的表示方法助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令“翻译”成机器指令才能被识别和执行。这个过程叫“汇编”。4.1.38086CPU的寻址方式1.立即数寻址AH2.寄存器寻址关于存储器寻址的说明段起始地址:某个段寄存器的内容(又称段基值)乘以16得到。3.直接寻址例:MOVAX,[1234H]本例执行完后,AX=3050Ha.直接寻址的操作过程与立即寻址不同。为表示它们的区别,直接寻址的偏移量用一对“[]”表示。4.寄存器间接寻址例:MOVAX,[BX]设DS=2000H,BX=1000Hb.变址寻址方式5.寄存器相对寻址例:MOVAX,[BX][DI]或MOVAX,[BX+DI]设BX=6000H,DI=1000H,则:EA=6000H+1000H=7000H,默认段为DS。若DS=2000H,则源操作数所对应的物理地址为:20000H+7000H=27000H。7.相对基址变址寻址例:·MOVAX,0260H[BX][SI]课堂练习与思考:课堂练习与思考:课堂练习与思考:4.28086指令系统mem存储器操作数data立即数opr表示操作数[]存储单元的内容acc累加器操作数(AX或AL)reg寄存器src源操作数segreg段寄存器dist目的操作数S_ins串操作指令disp8位或16位位移量count移位次数,可以是1或CLport输入输出端口,可用数字或表达式表示4.2.1数据传送类指令1.通用数据传送指令MOV注:①d,s不能同时为存储器指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。例:MOVAX,0;AX0,AX清0MOVAL,BUFFERS;BUFFERS内存单元内容送入ALMOVAX,DATA[SI+BX]DS162.交换指令:XCHGd,s;交换源和目标操作数3.堆栈操作指令:PUSH、POPPUSHs;⑴SP–2SP;⑵源操作数压入堆栈保存例:PUSHBX;把BX内容压入堆栈注:s和d只能为16位寄存器或存储单元(1)标志入栈指令:PUSHF(3)读取标志寄存器指令:LAHF(4)设置标志指令:SAHF5.地址传送指令(1)取有效地址指令:LEAd,s(2)地址指针装到指定的寄存器和DS的指令:LDSd,s例:LDSSI,BASE00(3)地址指针装到指定的寄存器和ES的指令:LESd,s即:BX寄存器含有表格的起始地址,AL中的值是作进入表格中的偏移量,查出表格中的内容送入AL中。例:设表首的偏移地址为2000H,要查找表内第4号单元(从0号算起)的内容并送回AL,则程序段如下:18H(2)输入/输出(I/O)指令﹡INacc,DX4.2.2算术运算类指令1.加法指令例:ADD[BX+106BH],1234H(2)ADCd,s(3)INCd2.减法指令(3)DECd(4)求补指令:NEGd(5)比较指令CMPd,s3.乘法指令(1)MULsb.16位乘法例:MULBX(2)IMULs例:MOVAL,88H;88H为–120的补码4.除法指令b.字除注:如果除数太小,使得商超出了一个字节或字所能表示的范围,则会出现“被0除”的错误(即产生一个“除法出错内部中断”请求)。(2)IDIVs(3)字节扩展为字指令:CBWCWD:字除法的符号扩展指令5.十进制调整指令①AAA:加法的非压缩型BCD码调整指令例:②DAA:压缩型BCD码加法调整指令例.组合BCD码调整+10000110(2)减法的BCD码调整①AAS:非压缩型BCD码减法的调整指令指令功能:把AL的减法结果调整为非压缩型BCD码数。调整后的结果低位在AL中,高位在AH中。②DAS:压缩型BCD码减法的调整指令最后结果AL=00110110B(代表36),CF=0(3)乘法的BCD码调整例:00001000(4)除法的BCD码调整例:MOVAX,0000011100000010B(代表72)1.逻辑运算类指令例:ANDBX,0F0FH(2)ORd,s(3)XORd,s(4)NOTd(5)测试指令TESTd,s2.移位指令左移1次:SALd,1右移1次:SARd,1(2)逻辑移位(3)循环左移b.带进位循环左移RCLd,1RCLd,CL(4)循环右移b.带进位循环右移RCRd,1RCRd,CL例:设32位数