微机原理与接口技术第3章汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微机原理与接口技术第3章汇编语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 汇编语言 程序设计 课件
- 资源描述:
-
1、第第 3 章章 第第 3 章章 3.1 8086/8088指令系统指令系统3.2 汇编语言程序汇编语言程序3.3 汇编语言程序设计汇编语言程序设计习题例习题例8086/8088指令语句格式指令语句格式 :;标号标号是自定义的、非系统关键字的符号串。是自定义的、非系统关键字的符号串。操作符操作符是操作码的助记符号表示,是指令的关键字,是操作码的助记符号表示,是指令的关键字,必必不可少不可少。操作数操作数是参与指令具体操作的是参与指令具体操作的操作对象操作对象,根据操作数的根据操作数的个数,有个数,有0(零)操作数(零)操作数指令、指令、单操作数单操作数指令和指令和双操作数双操作数(用逗号分割)指
2、令。(用逗号分割)指令。注释注释仅仅是提供阅读的文字信息。仅仅是提供阅读的文字信息。操作数寻址方式操作数寻址方式操作数作为参与指令具体操作数作为参与指令具体操作的对象操作的对象,可以是,可以是操作数据操作数据,也可以是也可以是转移地址转移地址。操作数可以是立即数,也可以存放在寄存器或内存储器操作数可以是立即数,也可以存放在寄存器或内存储器或输入或输入/输出接口中。输出接口中。操作数的寻址方式有操作数的寻址方式有立即方式、寄存器方式、直接内存立即方式、寄存器方式、直接内存方式、间接内存方式、方式、间接内存方式、I/O方式方式。8086/8088寻址方式分为寻址方式分为数据寻址方式数据寻址方式(7
3、种)和种)和转移地转移地址寻址方式址寻址方式(4种)两大类。种)两大类。数据传送数据传送MOV指令指令传送指令传送指令 MOV格式:格式:MOV dst,src操作:操作:dst src源操作数源操作数(src)传送到目的操作数)传送到目的操作数(dst)双双操作数:源操作数,目的操作数操作数:源操作数,目的操作数数据类型:字节类型数据类型:字节类型/字类型字类型立即方式立即方式:操作数据在指令中:操作数据在指令中直接给出直接给出(立即数立即数)。)。寄存器方式寄存器方式:操作数存放在指令给出的:操作数存放在指令给出的字节字节/字寄存器字寄存器中。中。例如:例如:MOV AX,0FC25H;A
4、X0FC25H MOV AL,42H;AL42HMOV AH,11010011B;AH 11010011B(0D3H)MOV CX,-25;AX-25MOV AL,1000 ;错误,错误,立即数立即数1000超字节范围超字节范围 MOV DS,2000H;错误错误,不能直接取立即数给段,不能直接取立即数给段RMOV AX,2000H;取;取2000H(立即数)给(立即数)给AXMOV DS,AX;将;将AX中的段基址数传送给中的段基址数传送给DSMOV AX,IP;错误错误,程序中不得出现,程序中不得出现IPMOV AX,CS;正确,;正确,CS可读可读MOV CS,AX;错误错误,CS不可写
5、不可写立即寻址和寄存器寻址立即寻址和寄存器寻址8086/8088存储器组织存储器组织微机微机存储器是以存储器是以字节字节为存储单位。为存储单位。8086/8088存储器(存储器(内存内存)地址线是)地址线是20根,根,内存容量内存容量1MB,地址范围地址范围 00FFFFFH。8086/8088存储器是存储器是分段结构分段结构,每段最大为,每段最大为64KB。操作数如果存放在内存,需要指明内存的操作数如果存放在内存,需要指明内存的逻辑地址逻辑地址,微处,微处理器的理器的地址加法器地址加法器会自动形成内存的会自动形成内存的物理地址物理地址.逻辑地址逻辑地址描述格式描述格式 段基址段基址:偏移址偏
6、移址 物理地址物理地址=段基址段基址16+偏移址偏移址存储器寻址方式存储器寻址方式段址寄存器:段址寄存器:内存逻辑地址的内存逻辑地址的段基址段基址存放的寄存器存放的寄存器(CS,SS,DS,ES)。)。偏移址寄存器偏移址寄存器:基址寄存器:基址寄存器(BX,BP),变址寄存器变址寄存器(SI,DI)。)。内存逻辑地址的内存逻辑地址的偏移地址(偏移地址(EA)寻址方式:寻址方式:直接寻址方式:直接寻址方式:指令中直接给出指令中直接给出EA 寄存器间接寻址方式:寄存器间接寻址方式:EA=(基(基/变址变址R)寄存器相对寻址方式:寄存器相对寻址方式:EA=(基基/变址变址R)+位移量位移量 基址变址
7、寻址方式:基址变址寻址方式:EA=(基址基址R)+(变址变址R)基址变址相对寻址方式:基址变址相对寻址方式:EA=(基址基址R)+(变址变址R)+位移量位移量段址寄存器段址寄存器和和偏移址寄存器偏移址寄存器配对使用的隐含规定:配对使用的隐含规定:代码(指令)指针代码(指令)指针CS:IP堆栈操作指针堆栈操作指针SS:SP,或或 SS:BP源数据串指针源数据串指针DS:SI目的数据串指针目的数据串指针ES:DI存储器寻址方式例存储器寻址方式例MOV AL,1000H;(;(DS:1000H)的字节数)的字节数ALMOV 2000H,BX;BX(DS:2000H)MOV AX,BX;(;(DS:B
8、X)的字数)的字数AXMOV AX,SS:BX;(;(SS:BX)的字数)的字数AXMOV AX,BX-100;(;(DS:(BX-100)的字数)的字数AXMOV BX+SI,AX;BX+SI 是内存间接寻址是内存间接寻址MOV AX,CX;错误错误,CX寄存器不能用于内存寻址寄存器不能用于内存寻址MOV BX,SI;错误错误,2个操作数不能都是内存寻址个操作数不能都是内存寻址MOV AX,SI+DI;错误错误,SI和和DI 不能配对做内存间接寻址不能配对做内存间接寻址8086/8088指令系统指令系统 8086/8088微机的指令系统有微机的指令系统有133条指令(附录条指令(附录A),分
9、为六大类:),分为六大类:1.数据数据传送类指令传送类指令:主要有主要有MOV,PUSH,POP,XCHG,LEA,IN,OUT等指令。等指令。2.算术运算类指令算术运算类指令:加、减、乘、除(整数)等算术运算指令。加、减、乘、除(整数)等算术运算指令。3.逻辑运算和移位类指令逻辑运算和移位类指令:逻辑运算和移位指令。逻辑运算和移位指令。4.控制转移类指令控制转移类指令:有有/无条件转移指令(在分支程序设计中介绍),无条件转移指令(在分支程序设计中介绍),LOOP循环控制指令(在循环程序设计中介绍),循环控制指令(在循环程序设计中介绍),CALL/RET指令指令(在子程序设计中介绍)。(在子程
10、序设计中介绍)。5.串操作类指令串操作类指令(在循环程序设计中介绍)(在循环程序设计中介绍)6.处理机控制类指令处理机控制类指令1.数据传送指令类数据传送指令类数据传送类指令一共有数据传送类指令一共有14条。这里主要介绍:条。这里主要介绍:MOV 传送传送PUSH 压入堆栈压入堆栈POP弹出堆栈弹出堆栈XCHG 交换交换LEA取偏移取偏移IN 输入端口输入端口“读读”OUT输出端口输出端口“写写”数据传送类指令均数据传送类指令均不影响标志位不影响标志位。数据类型字节(数据类型字节(byte)/字(字(word)。绝大多数是)。绝大多数是双操作数双操作数,两个操作数(字节两个操作数(字节/字)字
11、)类型必须一致类型必须一致。寻址方式基本与寻址方式基本与MOV 指令指令的要求相同的要求相同。数据传送指令数据传送指令传送指令传送指令 MOV格式:格式:MOV dst,src操作:操作:dst(src)双操作数寻址方式:双操作数寻址方式:dst(目的操作数目的操作数)src(源操作数源操作数)reg(寄存器寄存器)reg|mem|imm(立即数立即数)|segregmem(内存内存)reg|imm|segregsegreg(段寄存器段寄存器)reg|mem注意:注意:1.两个操作数类型(字节两个操作数类型(字节/字)要一致。字)要一致。2.目的操作数不能是立即数,两个操作数不能都是内存寻址方
12、式。目的操作数不能是立即数,两个操作数不能都是内存寻址方式。堆栈操作指令堆栈操作指令PUSH 和和POP 是一对堆栈操作指令:是一对堆栈操作指令:堆栈是一个堆栈是一个“先进后出先进后出”的内存数据存取区域。逻辑地址的内存数据存取区域。逻辑地址SS:SP。数据进入堆栈的操作为数据进入堆栈的操作为压入压入(PUSH),从堆栈取出数据的操作为),从堆栈取出数据的操作为弹出弹出(POP)。堆栈操作是)。堆栈操作是单操作数单操作数指令指令,只能是只能是字类型数据字类型数据。压入指令压入指令PUSH 格式:格式:PUSH src操作:操作:(SP)-2SP (src)(SP)操作数寻址:操作数寻址:src
13、=|mem|reg|segreg例如:例如:MOVAX,100 PUSHAX SS:0000 SP 栈顶栈顶 栈底栈底堆栈操作指令堆栈操作指令弹出指令弹出指令POP格式:格式:POP dst操作:操作:(SP)dst (SP)+2SP操作数寻址:操作数寻址:dst=mem|reg|segreg例如例如:PUSHAX;AX(SS:SP)PUSHBX;(;(DS:BX)(SS:SP)POPCX;(;(SS:SP)CXPUSHCL;错误错误,堆栈操作必须是字类型数据,堆栈操作必须是字类型数据POP200;错误错误,立即数不能是堆栈操作数据,立即数不能是堆栈操作数据交换指令交换指令XCHG格式:格式:
14、XCHG opr1,opr2操作:操作:(opr1)(opr2)操作数寻址:操作数寻址:opr1=reg|mem opr2=reg|mem例如:例如:XCHG 2000H,BX;错误,错误,两个内存数据不可直接交换。两个内存数据不可直接交换。可改为:可改为:MOV AX,2000H;(;(DS:2000H)AX XCHG AX,BX;AX和(和(DS:BX)交换)交换 MOV 2000H,AX;AX(DS:2000H)数据交换指令数据交换指令查表换码指令查表换码指令XLAT格式:格式:XLAT;无操作数无操作数操作:操作:ALDS:(BX+AL);隐含操作数寻址隐含操作数寻址注意注意:BX为表
15、头的为表头的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数据表头的数据表头的
16、EA(等同于:(等同于:MOV BX,OFFSET MEM)MOV AL,BX+2;AL=43H装偏移址指令装偏移址指令输入输入/输出(输出(I/O)指令)指令I/O接口指令的语句格式:接口指令的语句格式:IN AL,端口地址端口地址 OUT 端口地址端口地址,AL I/O接口的端口地址接口的端口地址16位,地址范围为位,地址范围为00FFFFH。若端口地址为。若端口地址为 00FFH(0255),可以),可以直接给出直接给出;超出字节范围的端口地址必须存;超出字节范围的端口地址必须存放在放在DX寄存器中,寄存器中,间接给出间接给出。例如:例如:IN AL,80H ;与;与 MOV AL,80
17、H 的区别的区别OUT 20H,AL;与;与 MOV 20H,AL 的区别的区别MOV DX,100H;DX=100HOUT DX,AL;与;与 MOV DX,AX 的区别的区别IN AL,80H;错误错误,端口寻址不能用方括号端口寻址不能用方括号算术运算类指令可以分成加、减、乘、(整)除和十进制(算术运算类指令可以分成加、减、乘、(整)除和十进制(BCD码)码)调整五组调整五组。这里介绍加、减、乘、除。这里介绍加、减、乘、除14条指令条指令。ADD 加法加法ADC 进位加进位加INC 加加1 SUB 减法减法SBB 借位减借位减DEC 减减1 CMP 比较比较NEG 求补求补MUL 无符号乘
18、法无符号乘法 IMUL 有符号乘法有符号乘法DIV 无符号除法无符号除法IDIV 有符号除法有符号除法CBW 字节符号扩展字节符号扩展CWD 字符号扩展字符号扩展算术运算类指令基本都均算术运算类指令基本都均影响标志位影响标志位(ZF、SF、CF、OF)。)。绝大多数是绝大多数是双操作数双操作数,操作数可为字节,操作数可为字节/字类型。字类型。寻址方式与寻址方式与MOV 指令指令基本相同。基本相同。2.算术运算指令类算术运算指令类加法指令加法指令ADD格式:格式:ADD dst,src;(dst)+(src)dst进位加指令进位加指令ADC格式:格式:ADC dst,src;(dst)+(src
19、)+CF dst加加1指令指令INC格式:格式:INC dst;(dst)+1 dst操作数寻址方式:操作数寻址方式:dstsrc regreg|mem|imm memreg|imm加法运算指令加法运算指令减法指令减法指令SUB格式:格式:SUB dst,src;(dst)-(src)dst 借位减指令借位减指令SBB格式:格式:SBB dst,src;(dst)-(src)-CF dst减减1指令指令DEC格式:格式:DEC dst;(dst)-1dst操作数寻址方式:操作数寻址方式:dstsrc regreg|mem|imm memreg|imm减法运算指令减法运算指令减法运算指令减法运算
20、指令比较指令比较指令CMPCMP格式:格式:CMP dst,src操作:(操作:(dst)-(src),仅根据计算结果设置相关标志位。仅根据计算结果设置相关标志位。求补指令求补指令 NEGNEG格式:格式:NEGdst操作:操作:0-(dst)dst;求互补码求互补码无符号乘法指令无符号乘法指令MUL有符号乘法指令有符号乘法指令IMUL格式:格式:MUL src IMUL src操作数寻址:操作数寻址:src=reg|mem操作:有操作:有/无符号数的乘法无符号数的乘法字节乘法字节乘法:(:(AL)(src)AX字乘法字乘法:(AX)(src)DX|AX(32位)位)注意:注意:被乘数和乘积是
21、固定寻址,只需给出乘数。被乘数和乘积是固定寻址,只需给出乘数。例如例如:无符号数无符号数字节乘法(字节乘法(2551)0FFH1=00FFH 有符号数有符号数字节乘法(字节乘法(-11)0FFH1=0FFFFH乘法运算指令乘法运算指令无符号除法指令无符号除法指令DIV有符号除法指令有符号除法指令IDIV格式:格式:DIV src IDIV src操作数寻址操作数寻址:src=reg|mem操作:有操作:有/无符号数的除法无符号数的除法字节除法字节除法:(:(AX)/(src)AL(商),(商),AH(余数)(余数)字除法字除法:(DX|AX)/(src)AX(商),(商),DX(余数)(余数)
22、注意注意:1.被除数,商和余数是固定寻址,只需给出除数。被除数,商和余数是固定寻址,只需给出除数。2.除法可能有除法可能有0作除数错误作除数错误;商超出字节商超出字节/字范围的字范围的溢出错误溢出错误。3.有符号数除法的有符号数除法的余数与被除数的符号相同余数与被除数的符号相同。除法运算指令除法运算指令符号扩展指令符号扩展指令CBW,CWD 格式:格式:CBW;把把AL字节数的符号扩展到字节数的符号扩展到AH,成,成AX字数字数CWD;把把AX字数的符号扩展到字数的符号扩展到DX,成,成DX|AX双字数双字数操作数操作数:隐含寻址隐含寻址(AL/AX/DX)标志位:不改变。标志位:不改变。例如
23、:例如:MOVAL,56HCBW;AX=0056HMOVAX,8600HCWD;AX=8600H,DX=0FFFFH符号扩展指令符号扩展指令例如:例如:MULAH;无符号数无符号数(AL)(AH)AX DIVBX;无符号数无符号数(DX|AX)/(BX)AXIMULAL;有符号数有符号数(AL)(AL)AX IMUL CX;有符号数有符号数(AX)(CX)DX|AX例如:计算例如:计算(-104)除以除以25。MOVAL,-104;AL=-104(98H)CBW ;AL扩展为扩展为 AX(0FF98H)MOVBL,25;BL=25 IDIVBL;AL=-4(商),(商),AH=-4(余数)(余
24、数)例如,如果例如,如果 AX=0010H(+16),),BL=0FDH(-3)IDIV BL;AX=01FBH,商,商=-5,余数,余数=1乘乘/除法指令应用例除法指令应用例3.逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位类指令是以逻辑运算和移位类指令是以2#数位为单位的数位为单位的“位操作位操作”指令,指令,逻辑运逻辑运算指令算指令5条,移位指令条,移位指令8条。条。NOT 逻辑非逻辑非AND 逻辑与逻辑与OR 逻辑或逻辑或XOR 逻辑异或逻辑异或TEST 位测试位测试SHL 逻辑左移逻辑左移ROL 循环左移循环左移 SHR 逻辑右移逻辑右移ROR 循环右移循环右移SAL 算术左移算
25、术左移RCL 带进位循环左移带进位循环左移SAR 算术右移算术右移RCR 带进位循环右移带进位循环右移操作数可为字节操作数可为字节/字类型,按位进行逻辑运算字类型,按位进行逻辑运算。多数情况不改变标志位。多数情况不改变标志位。逻辑运算指令逻辑运算指令逻辑非指令逻辑非指令NOT格式:格式:NOTdst ;求(求(dst)的互反码)的互反码逻辑与指令逻辑与指令 AND逻辑或指令逻辑或指令 OR逻辑异或指令逻辑异或指令XOR格式:格式:ANDdst,src 操作:操作:(dst)(src)dst ORdst,src (dst)(src)dstXORdst,src (dst)(src)dst测试指令测
展开阅读全文