微机原理与接口技术第3章汇编语言程序设计ppt课件.ppt
《微机原理与接口技术第3章汇编语言程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第3章汇编语言程序设计ppt课件.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术第3章汇编语言程序设计ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第第 3 章章 汇编语言程序设计汇编语言程序设计3.1 8086/8088指令系统指令系统3.2 汇编语言程序汇编语言程序3.3 汇编语言程序设计汇编语言程序设计习题例习题例8086/8088指令语句格式指令语句格式 :;标号标号是自定义的、非系统关键字的符号串。是自定义的、非系统关键字的符号串。操操作作符符是是操操作作码码的的助助记记符符号号表表示示,是是指指令令的
2、的关关键键字字,必必不可少不可少。操操作作数数是是参参与与指指令令具具体体操操作作的的操操作作对对象象,根根据据操操作作数数的的个个数数,有有0(零零)操操作作数数指指令令、单单操操作作数数指指令令和和双双操操作作数数(用逗号分割)指令。(用逗号分割)指令。注释注释仅仅是提供阅读的文字信息。仅仅是提供阅读的文字信息。操作数寻址方式操作数寻址方式操操作作数数作作为为参参与与指指令令具具体体操操作作的的对对象象,可可以以是是操操作作数数据据,也可以是也可以是转移地址转移地址。操作数可以是立即数,也可以存放在寄存器或内存储器操作数可以是立即数,也可以存放在寄存器或内存储器或输入或输入/输出接口中。输
3、出接口中。操作数的寻址方式有操作数的寻址方式有立即方式、寄存器方式、直接内存立即方式、寄存器方式、直接内存方式、间接内存方式、方式、间接内存方式、I/O方式方式。8086/8088寻址方式分为寻址方式分为数据寻址方式数据寻址方式(7种)和种)和转移地转移地址寻址方式址寻址方式(4种)两大类。种)两大类。数据传送数据传送MOV指令指令传送指令传送指令 MOV格式:格式:MOV dst,src操作:操作:dst src源操作数(源操作数(src)传送到目的操作数()传送到目的操作数(dst)双双操作数:源操作数,目的操作数操作数:源操作数,目的操作数数据类型:字节类型数据类型:字节类型/字类型字类
4、型立即方式立即方式:操作数据在指令中:操作数据在指令中直接给出直接给出(立即数立即数)。)。寄存器方式寄存器方式:操作数存放在指令给出的:操作数存放在指令给出的字节字节/字寄存器字寄存器中。中。例如:例如:MOV AX,0FC25H;AX0FC25H MOV AL,42H;AL42HMOV AH,11010011B;AH 11010011B(0D3H)MOV CX,-25;AX-25MOV AL,1000 ;错误,错误,立即数立即数1000超字节范围超字节范围 MOV DS,2000H;错误错误,不能直接取立即数给段,不能直接取立即数给段RMOV AX,2000H;取;取2000H(立即数)给
5、(立即数)给AXMOV DS,AX;将;将AX中的段基址数传送给中的段基址数传送给DSMOV AX,IP;错误错误,程序中不得出现,程序中不得出现IPMOV AX,CS;正确,;正确,CS可读可读MOV CS,AX;错误错误,CS不可写不可写立即寻址和寄存器寻址立即寻址和寄存器寻址8086/8088存储器组织存储器组织微机微机存储器是以存储器是以字节字节为存储单位。为存储单位。8086/8088存储器(存储器(内存内存)地址线是)地址线是20根,根,内存容量内存容量1MB,地址范围,地址范围 00FFFFFH。8086/8088存储器是存储器是分段结构分段结构,每段最大为,每段最大为64KB。
6、操作数如果存放在内存,需要指明内存的操作数如果存放在内存,需要指明内存的逻辑地址逻辑地址,微处,微处理器的理器的地址加法器地址加法器会自动形成内存的会自动形成内存的物理地址物理地址.逻辑地址逻辑地址描述格式描述格式 段基址段基址:偏移址偏移址 物理地址物理地址=段基址段基址16+偏移址偏移址存储器寻址方式存储器寻址方式段址寄存器段址寄存器:内存内存逻辑地址的逻辑地址的段基址段基址存放的寄存器(存放的寄存器(CS,SS,DS,ES)。)。偏移址寄存器偏移址寄存器:基址寄存器(基址寄存器(BX,BP),变址寄存器(变址寄存器(SI,DI)。)。内存内存逻辑地址的逻辑地址的偏移地址(偏移地址(EA)
7、寻址方式:寻址方式:直接寻址方式:直接寻址方式:指令中直接给出指令中直接给出EA 寄存器间接寻址方式:寄存器间接寻址方式:EA=(基(基/变址变址R)寄存器相对寻址方式:寄存器相对寻址方式:EA=(基(基/变址变址R)+位移量位移量 基址变址寻址方式:基址变址寻址方式:EA=(基址(基址R)+(变址(变址R)基址变址相对寻址方式:基址变址相对寻址方式:EA=(基址(基址R)+(变址(变址R)+位移量位移量段址寄存器段址寄存器和和偏移址寄存器偏移址寄存器配对使用的隐含规定:配对使用的隐含规定:代码(指令)指针代码(指令)指针CS:IP堆栈操作指针堆栈操作指针SS:SP,或或 SS:BP源数据串指
8、针源数据串指针DS:SI目的数据串指针目的数据串指针ES:DI存储器寻址方式例存储器寻址方式例MOV AL,1000H;(;(DS:1000H)的字节数)的字节数ALMOV 2000H,BX;BX(DS:2000H)MOV AX,BX;(;(DS:BX)的字数)的字数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个操作数不能都是
9、内存寻址个操作数不能都是内存寻址MOV AX,SI+DI;错误错误,SI和和DI 不能配对做内存间接寻址不能配对做内存间接寻址8086/8088指令系统指令系统 8086/8088微机的指令系统有微机的指令系统有133条指令(附录条指令(附录A),分为六大类:),分为六大类:1.数数据据传传送送类类指指令令:主主要要有有MOV,PUSH,POP,XCHG,LEA,IN,OUT等指令。等指令。2.算术运算类指令算术运算类指令:加、减、乘、除(整数)等算术运算指令。加、减、乘、除(整数)等算术运算指令。3.逻辑运算和移位类指令逻辑运算和移位类指令:逻辑运算和移位指令。逻辑运算和移位指令。4.控制转
10、移类指令控制转移类指令:有有/无条件转移指令(在分支程序设计中介绍),无条件转移指令(在分支程序设计中介绍),LOOP循环控制指令(在循环程序设计中介绍),循环控制指令(在循环程序设计中介绍),CALL/RET指令指令(在子程序设计中介绍)。(在子程序设计中介绍)。5.串操作类指令串操作类指令(在循环程序设计中介绍)(在循环程序设计中介绍)6.处理机控制类指令处理机控制类指令1.数据传送指令类数据传送指令类数据传送类指令一共有数据传送类指令一共有14条。这里主要介绍:条。这里主要介绍:MOV 传送传送PUSH 压入堆栈压入堆栈POP弹出堆栈弹出堆栈XCHG 交换交换LEA取偏移取偏移IN 输入
11、端口输入端口“读读”OUT输出端口输出端口“写写”数据传送类指令均数据传送类指令均不影响标志位不影响标志位。数据类型字节(数据类型字节(byte)/字(字(word)。绝大多数是)。绝大多数是双操作数双操作数,两个操作数(字节两个操作数(字节/字)字)类型必须一致类型必须一致。寻址方式基本与寻址方式基本与MOV 指令指令的要求相同的要求相同。数据传送指令数据传送指令传送指令传送指令 MOV格式:格式:MOV dst,src操作:操作:dst(src)双操作数寻址方式:双操作数寻址方式:dst(目的操作数目的操作数)src(源操作数源操作数)reg(寄存器寄存器)reg|mem|imm(立即数立
12、即数)|segregmem(内存内存)reg|imm|segregsegreg(段寄存器段寄存器)reg|mem注意:注意:1.两个操作数类型(字节两个操作数类型(字节/字)要一致。字)要一致。2.目的操作数不能是立即数,两个操作数不能都是内存寻址方式。目的操作数不能是立即数,两个操作数不能都是内存寻址方式。堆栈操作指令堆栈操作指令PUSH 和和POP 是一对堆栈操作指令:是一对堆栈操作指令:堆栈是一个堆栈是一个“先进后出先进后出”的内存数据存取区域。逻辑地址的内存数据存取区域。逻辑地址SS:SP。数据进入堆栈的操作为数据进入堆栈的操作为压入压入(PUSH),从堆栈取出数据的操作为),从堆栈取
13、出数据的操作为弹出弹出(POP)。堆栈操作是)。堆栈操作是单操作数单操作数指令指令,只能是只能是字类型数据字类型数据。压入指令压入指令PUSH 格式:格式:PUSH src操作:操作:(SP)-2SP (src)(SP)操作数寻址:操作数寻址:src=|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;
14、(;(DS:BX)(SS:SP)POPCX;(;(SS:SP)CXPUSHCL;错误错误,堆栈操作必须是字类型数据,堆栈操作必须是字类型数据POP200;错误错误,立即数不能是堆栈操作数据,立即数不能是堆栈操作数据交换指令交换指令XCHG格式:格式:XCHG opr1,opr2操作:操作:(opr1)(opr2)操作数寻址:操作数寻址:opr1=reg|mem opr2=reg|mem例如:例如:XCHG 2000H,BX;错误,错误,两个内存数据不可直接交换。两个内存数据不可直接交换。可改为:可改为:MOV AX,2000H;(;(DS:2000H)AX XCHG AX,BX;AX和(和(D
15、S:BX)交换)交换 MOV 2000H,AX;AX(DS:2000H)数据交换指令数据交换指令查表换码指令查表换码指令XLAT格式:格式:XLAT;无操作数无操作数操作:操作:ALDS:(BX+AL);隐含操作数寻址隐含操作数寻址注意注意:BX为表头的为表头的EA,AL是距离表头的位移量是距离表头的位移量。表最大容量为。表最大容量为256个个字节。字节。例如:例如:MEMDB ABCDEFGHIJKLMNOPQRSTUVWXYZMOV BX,OFFSET MEM MOV AL,2XLAT;AL=43H(C的的ASCII码值)码值)查表换码指令查表换码指令装偏移指令装偏移指令LEA格式:格式:
16、LEA dst,src操作:操作:src的的偏移址偏移址dst操作数寻址:操作数寻址:dst=reg src=mem 例如:例如:MEM DB ABCDEFGHIJKLMNOPQRSTUVWXYZLEA BX,MEM;BX取取MEM数据表头的数据表头的EA(等同于:(等同于:MOV BX,OFFSET MEM)MOV AL,BX+2;AL=43H装偏移址指令装偏移址指令输入输入/输出(输出(I/O)指令)指令I/O接口指令的语句格式:接口指令的语句格式:IN AL,端口地址端口地址 OUT 端口地址端口地址,AL I/O接接口口的的端端口口地地址址16位位,地地址址范范围围为为00FFFFH。
17、若若端端口口地地址址为为 00FFH(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;错误错误,端口寻址不能用方括号端口寻址不能用方括号算术运算类指令可以分成加、减、乘、(整)除和十进制(算术运算类指令可以分成加、减、乘、(整)除和十进制(BCD
18、码)码)调整五组调整五组。这里介绍加、减、乘、除。这里介绍加、减、乘、除14条指令条指令。ADD 加法加法ADC 进位加进位加INC 加加1 SUB 减法减法SBB 借位减借位减DEC 减减1 CMP 比较比较NEG 求补求补MUL 无符号乘法无符号乘法 IMUL 有符号乘法有符号乘法DIV 无符号除法无符号除法IDIV 有符号除法有符号除法CBW 字节符号扩展字节符号扩展CWD 字符号扩展字符号扩展算术运算类指令基本都均算术运算类指令基本都均影响标志位影响标志位(ZF、SF、CF、OF)。)。绝大多数是绝大多数是双操作数双操作数,操作数可为字节,操作数可为字节/字类型。字类型。寻址方式与寻址
19、方式与MOV 指令指令基本相同。基本相同。2.算术运算指令类算术运算指令类加法指令加法指令ADD格式:格式:ADD dst,src;(dst)+(src)dst进位加指令进位加指令ADC格式:格式:ADC dst,src;(dst)+(src)+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;(
20、dst)-(src)-CF dst减减1指令指令DEC格式:格式:DEC dst;(dst)-1dst操作数寻址方式:操作数寻址方式:dstsrc regreg|mem|imm memreg|imm减法运算指令减法运算指令减法运算指令减法运算指令比较指令比较指令CMPCMP格式:格式:CMP dst,src操作:(操作:(dst)-(src),仅根据计算结果设置相关标志位。仅根据计算结果设置相关标志位。求补指令求补指令 NEG NEG格式:格式:NEGdst操作:操作:0-(dst)dst;求互补码求互补码例如,计算例如,计算例如,计算例如,计算 12345678H+80A7FD28H 123
21、45678H+80A7FD28H MOV DX,1234HMOV DX,1234H MOV AX,5678HMOV AX,5678H;DX|AX=12345678HDX|AX=12345678H ADD AX,0FD28HADD AX,0FD28H ADC DX,80A7H ADC DX,80A7H;DX|AX=92DC53A0HDX|AX=92DC53A0H无符号乘法指令无符号乘法指令MUL有符号乘法指令有符号乘法指令IMUL格式:格式:MUL src IMUL src操作数寻址:操作数寻址:src=reg|mem操作:有操作:有/无符号数的乘法无符号数的乘法字节乘法字节乘法:(:(AL)(
22、src)AX字乘法字乘法:(AX)(src)DX|AX(32位)位)注意:注意:被乘数和乘积是固定寻址,只需给出乘数。被乘数和乘积是固定寻址,只需给出乘数。例如例如:无符号数无符号数字节乘法(字节乘法(2551)0FFH1=00FFH 有符号数有符号数字节乘法(字节乘法(-11)0FFH1=0FFFFH乘法运算指令乘法运算指令无符号除法指令无符号除法指令DIV有符号除法指令有符号除法指令IDIV格式:格式:DIV src IDIV src操作数寻址:操作数寻址:src=reg|mem操作:有操作:有/无符号数的除法无符号数的除法字节除法字节除法:(:(AX)/(src)AL(商),(商),AH
23、(余数)(余数)字除法字除法:(DX|AX)/(src)AX(商),(商),DX(余数)(余数)注意注意:1.被除数,商和余数是固定寻址,只需给出除数。被除数,商和余数是固定寻址,只需给出除数。2.除法可能有除法可能有0作除数错误作除数错误;商超出字节商超出字节/字范围的字范围的溢出错误溢出错误。3.有符号数除法的有符号数除法的余数与被除数的符号相同余数与被除数的符号相同。除法运算指令除法运算指令符号扩展指令符号扩展指令CBW,CWD 格式:格式:CBW;把把AL字节数的符号扩展到字节数的符号扩展到AH,成,成AX字数字数CWD;把把AX字数的符号扩展到字数的符号扩展到DX,成,成DX|AX双
24、字数双字数操作数操作数:隐含寻址隐含寻址(AL/AX/DX)标志位:不改变。标志位:不改变。例如:例如: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(0FF98
25、H)MOVBL,25;BL=25 IDIVBL;AL=-4(商),(商),AH=-4(余数)(余数)例如,如果例如,如果 AX=0010H(+16),),BL=0FDH(-3)IDIV BL;AX=01FBH,商,商=-5,余数,余数=1乘乘/除法指令应用例除法指令应用例3.逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位类指令是以逻辑运算和移位类指令是以2#数位为单位的数位为单位的“位操作位操作”指令,指令,逻辑运逻辑运算指令算指令5条,移位指令条,移位指令8条。条。NOT 逻辑非逻辑非AND 逻辑与逻辑与OR 逻辑或逻辑或XOR 逻辑异或逻辑异或TEST 位测试位测试SHL 逻辑左移逻辑
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 汇编语言 程序设计 ppt 课件
限制150内