《微机汇编》PPT课件.ppt
《《微机汇编》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微机汇编》PPT课件.ppt(67页珍藏版)》请在三一办公上搜索。
1、微机原理与接口技术,教案,第 3 章 汇编语言程序设计,第 3 章 汇编语言程序设计,3.1 8086/8088指令系统3.2 汇编语言程序3.3 汇编语言程序设计,3.1.1 8086/8088指令格式,8086/8088执行指令的语句格式:标号:操作符 操作数;注释操作符是操作码的助记符号表示,是指令的关键字,必不可少。标号是自定义的、非系统关键字的符号串。操作数是参与指令具体操作的操作对象,根据操作数的个数,有0(零)操作数指令、单操作数指令和双操作数(用逗号分割)指令。,操作数寻址方式,8086/8088操作数作为参与指令具体的操作对象,可以是操作数据,也可以是转移地址。寻址方式是指操
2、作对象存放的地方,可以是直接给出(立即数),也可以存放在寄存器,或内存储器,或输入/输出接口中。8086/8088寻址方式分为操作数据寻址方式和转移地址寻址方式两大类。操作数据寻址方式(7种):立即寻址、寄存器寻址、直接内存或I/O寻址、间接内存或I/O寻址方式等。转移地址寻址方式(4种):段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址方式。,立即方式:操作数据在指令中直接给出(立即数)。寄存器方式:操作数存放在指令给出的字节/字寄存器中。例如:MOV AX,0FC25H;AX0FC25HMOV AL,42H;AL42HMOV AH,11010011B;AH 11010011B(0D3
3、H)MOV CX,-25;AX-25MOV AL,1000;错误,超字节范围 MOV DS,2000H;错误,立即数不能直接给段RMOV AX,IP;错误,不得使用IPMOV AX,CS;正确,CS可读MOV CS,AX;错误,CS不可写,立即寻址和寄存器寻址,存储器寻址方式,内存逻辑地址的段基址值存放在段址寄存器:CS/SS/DS/ES内存逻辑地址的偏移地址(EA)寻址方式:直接方式:指令中直接给出EA 间接方式:EA=(寄存器)EA=(寄存器)+位移量 EA=(寄存器1)+(寄存器2)EA=(寄存器1)+(寄存器2)+位移量内存寻址使用的偏移址寄存器:BX,BP,SI,DI段址R和偏移址R
4、配对使用的隐含规定:代码(指令)指针CS:IP堆栈操作指针SS:SP,或 SS:BP源数据串指针DS:SI目的数据串指针ES:DI,存储器数据寻址方式例,MOV AX,1000H;(DS:1000H)的字数AXMOV 2000H,BX;BX(DS:2000H)MOV AX,BX;(DS:BX)的字数AXMOV AX,SS:SI;(SS:SI)的字数AXMOV AX,BX-100;(DS:(BX-100)的字数AXMOV BX+SI,AX;BX+SI 是内存间接寻址MOV AX,BX+DI+8;BX+DI+8 是内存间接寻址MOV AX,CX;错误,CX寄存器不能用于内存寻址MOV BX,SI;
5、错误,2个操作数不能都是内存寻址MOV AX,SI+DI;错误,SI和DI 不能配对做内存间接寻址,3.1.3 8086/8088指令系统,8086/8088 指令系统有133条指令,分为六大类:1.传送指令类:主要有MOV 传送,PUSH 压入,POP 弹出,XCHG 交换,LEA 取偏移 等。2.算术运算指令类:加、减、乘、除(整数)算术运算和BCD码调整五组指令。3.逻辑运算和移位指令类:逻辑运算指令组,移位指令组。4.控制转移指令类:有/无条件转移指令组(将在分支程序设计中介绍),LOOP指令组(将在循环程序设计中介绍),CALL/RET指令组(将在子程序设计中介绍)。5.串操作指令类
6、(略)6.处理机控制指令类,1.数据传送指令类,数据传送类指令一共有14条(表3.1)。这里主要介绍:MOV 传送 PUSH 压入堆栈POP 弹出堆栈 XCHG 交换LEA 取偏移 IN 输入端口“读”OUT 输出端口“写”数据传送类指令均不影响标志位。数据类型字节(byte)/字(word)。绝大多数是双操作数,两个操作数(字节/字)类型必须一致。寻址方式基本与MOV 指令的要求相同。,数据传送指令,传送指令 MOV格式:MOV dst,src操作:dst(src)双操作数寻址方式:dst(目的操作数)src(源操作数)reg(寄存器)reg|mem|data(立即数)|segregmem(
7、内存)reg|data|segregsegreg(段寄存器)reg|mem两个操作数类型(字节/字)要一致。目的操作数不能是立即数,两个操作数不能都是内存寻址方式。,堆栈操作指令,PUSH 和POP 是一对堆栈操作指令:堆栈是一个“先进后出”的内存数据存取区域。堆栈逻辑地址SS:SP。数据进入堆栈的操作为压入(PUSH),从堆栈取出数据的操作为弹出(POP)。堆栈操作是单操作数指令,只能是字类型数据。压入指令PUSH 格式:PUSH src操作:(SP)-2SP(src)(SP)操作数寻址:src=|mem|reg|segreg,弹出指令POP格式:POP dst操作:(SP)dst(SP)+
8、2SP操作数寻址:dst=mem|reg|segreg例如:PUSHAX;AX(SS:SP)PUSHBX;(DS:BX)(SS:SP)POPCX;(SS:SP)CXPUSHCL;错误,堆栈操作必须是字类型数据POP200;错误,立即数不能是堆栈操作数据,堆栈操作指令,交换指令XCHG格式:XCHG opr1,opr2操作:(opr1)(opr2)操作数寻址:opr1=regopr2=reg|mem注意:不可以直接把两个内存数据交换。例如:MOV AX,2000H;(DS:2000H)AXXCHG AX,BX;AX和(DS:BX)交换MOV 2000H,AX;AX(DS:2000H),数据交换指
9、令,查表换码指令XLAT格式:XLAT;无操作数操作:ALDS:(BX+AL);隐含操作数寻址注意:BX为表头的EA,AL是距离表头的位移量。表最大容量为256个字节。例如:MEMDB ABCDEFGHIJKLMNOPQRSTUVWXYZMOV BX,OFFSET MEM MOV AL,2XLAT;AL=43H(C的ASCII码值),查表换码指令,装偏移指令LEA格式:LEA dst,src操作:src的偏移址dst操作数寻址:dst=reg src=mem 例如:MEM DB ABCDEFGHIJKLMNOPQRSTUVWXYZLEA BX,MEM;BX取MEM数据表头的EA(等同于:MOV
10、 BX,OFFSET MEM)MOV AL,BX+2;AL=43H(C的ASCII码值),装偏移地址指令,输入/输出(I/O)指令,I/O接口指令的语句格式:IN AL,端口地址 OUT 端口地址,AL I/O接口指令的端口地址16位,地址范围为0000H FFFFH。若端口地址为 00H FFH(0255),可以直接给出;超出该范围的端口地址必须存放在DX寄存器,间接给出。例如:IN AL,80H;与 MOV AL,80H 的区别OUT 20H,AL;与 MOV 20H,AL 的区别MOV DX,100H;DX=100HOUT DX,AL;与 MOV DX,AX 的区别IN AL,80H;错
11、误,端口寻址不能用方括号,算术运算类指令一共有20条,分成加、减、乘、(整)除指令和BCD码调整指令五组。这里主要介绍加、减、乘、除14条指令(表3.2):ADD 加法ADC 进位加INC 加1 SUB 减法SBB借位减DEC 减1 CMP 比较NEG 求补MUL 无符号乘法 IMUL有符号乘法DIV 无符号除法IDIV 有符号除法CBW 字节符号扩展CWD字符号扩展算术运算类指令基本都均影响标志位(ZF、SF、CF、OF)。绝大多数是双操作数,操作数可为字节/字类型。寻址方式与MOV 指令基本相同。,2.算术运算指令类,加法指令ADD格式:ADD dst,src;(dst)+(src)dst
12、进位加指令ADC格式:ADC dst,src;(dst)+(src)+CF dst加1指令INC格式:INC dst;(dst)+1 dst操作数寻址方式:dstsrc regreg|mem|data memreg|data,加法运算指令,减法指令SUB格式:SUB dst,src;(dst)-(src)dst 借位减指令SBB格式:SBB dst,src;(dst)-(src)-CF dst减1指令DEC格式:DEC dst;(dst)-1dst操作数寻址方式:dstsrc regreg|mem|data memreg|data,减法运算指令,比较指令CMP格式:CMP dst,src操作:
13、(dst)-(src),仅根据计算结果设置相关标志位。求补指令 NEG格式:NEGdst操作:0-(dst)dst;求互补码例如,计算12345678H+80A7FD28H MOV DX,1234H MOV AX,5678H;DX|AX=12345678H ADD AX,0FD28H ADC DX,80A7H;DX|AX=92DC53A0H,减法运算指令,无符号乘法指令MUL有符号乘法指令IMUL格式:MUL srcIMUL src操作数寻址:src=reg|mem操作:有/无符号数的乘法字节乘法:(AL)(src)AX字乘法:(AX)(src)DX|AX(32位)标志位:ZF,SF无定义。乘
14、积的高阶部分如果非0,OF,CF均被置1。例如:无符号数字节乘法 0FFH1=00FFH 有符号数字节乘法 0FFH1=0FFFFH,乘法运算指令,无符号除法指令DIV有符号除法指令IDIV格式:DIVsrcIDIVsrc操作数寻址:src=reg|mem操作:有/无符号数的除法字节除法:(AX)/(src)AL(商),AH(余数)字除法:(DX|AX)/(src)AX(商),DX(余数)注意:1.除法可能有0作除数错误;商超出字节/字范围的溢出错误。2.有符号数除法的余数与被除数的符号相同。,除法运算指令,符号扩展指令CBW和CWD 格式:CBW;把有符号数AL扩展为AXCWD;把有符号数A
15、X扩展为DX|AX操作数:隐含寻址(AL/AX/DX)标志位:不改变。例如:MOVAL,07FHCBW;AX=007FHMOVAX,8003HCWD;AX=8003H,DX=0FFFFH,符号扩展指令,例如:MULAH;无符号数(AL)(AH)AX IMULAL;有符号数(AL)(AL)AXMULBX;无符号数(AX)(BX)DX|AX MUL word ptr BX;(AX)(BX)DX|AX例如:计算30200除以1500。MOVAX,30200;AX=30200 CWD;AX扩展为 DX|AXMOVBX,1500DIVBX;AX=20(商),DX=200(余数)例如,如果 AX=0010
16、H(+16),BL=0FDH(-3)IDIV BL;AX=01FBH,商=-5,余数=1,乘/除法指令应用例,3.逻辑运算和移位指令,逻辑运算和移位类指令是以2#数位为单位的“位操作”指令,逻辑运算指令5条,移位指令8条(表3.3)。NOT 逻辑非AND 逻辑与OR 逻辑或XOR 逻辑异或TEST 位测试SHL 逻辑左移ROL 循环左移 SHR 逻辑右移ROR 循环右移SAL 算术左移RCL 带进位循环左移SAR 算术右移RCR 带进位循环右移操作数可为字节/字类型,按位进行逻辑运算。多数情况不改变标志位。,逻辑运算指令,逻辑非指令NOT格式:NOTdst;求(dst)的互反码逻辑与指令 AN
17、D逻辑或指令 OR逻辑异或指令XOR格式:ANDdst,src 操作:(dst)(src)dst ORdst,src(dst)(src)dstXORdst,src(dst)(src)dst测试指令TEST格式:TEST dst,src操作:(dst)(src);不保存结果,仅设置标志位,移位指令,逻辑左移 SHL逻辑右移 SHR算术左移 SAL算术右移 SAR循环左移 ROL循环右移 ROR带进位循环左移 RCL带进位循环右移 RCR格式:dst,cnt操作数寻址:dst是移位的对象,dst=reg|memcnt是移位的位数,cnt=1|CL标志位:ZF 和SF,指明移位结果的设置。CF:左移
18、取自dst最高位,右移取自dst 的D0位。,逻辑运算和移位指令应用例,AND AL,50H;AL=(AL)50HOR AX,8080H;AX=(AX)(DS:8080H)XOR AX,AX;AX=0,CF=0AND AL,0FH;AL高4位清0,低4位保留OR AL,0FH;AL高4位保留,低4位置1XOR AL,0FH;AL高4位保留,低4位取反,;AX乘以10SAL AX,1MOVBX,AXSALAX,1SALAX,1ADDAX,BX,6.处理器控制指令,标志位设置指令:CLCCF=0STCCF=1CMCCF取反CLDDF=0 STDDF=1CLIIF=0 STI IF=1CPU控制指令
19、:NOP无操作(空操作)HLT停机(暂停,等待外部中断,中断后恢复运行)WAIT等待(等待测试信号TEST,恢复运行),汇编语言程序的语句,汇编语言源程序由三类指令语句组成:(符号)执行指令语句提供给汇编程序“翻译”成机器能直接执行的指令。汇编指示性语句(伪指令)提供给汇编程序指示汇编操作的指令。宏指令语句提供给汇编程序的扩展的“功能宏大”的指令。,3.2.1 8086/8088汇编语句,8086/8088汇编语句格式:名字:操作符 操作数;注释操作符是操作码的助记符号表示,是执行指令、伪指令和宏指令的操作功能符(关键字)。名字是自定义的、非系统关键字的符号串。根据操作数的个数,有0(零)操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机汇编 微机 汇编 PPT 课件

链接地址:https://www.31ppt.com/p-5508294.html