微机原理及单片机应用技术第3章-汇编语言与汇编程序设计基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微机原理及单片机应用技术第3章-汇编语言与汇编程序设计基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 单片机 应用技术 汇编语言 汇编程序 设计 基础 课件
- 资源描述:
-
1、微机原理、汇编与接口技术第三章 程序设计的基本技术3.13.13.23.23.33.33.3.5 5符号指令的格式符号指令的格式8088/8086 CPU8088/8086 CPU的寻址方式的寻址方式8088/8086 CPU8088/8086 CPU的指令系统的指令系统汇编语言程序实现汇编语言程序实现3.3.4 4伪指令伪指令3.3.6 6程序设计举例程序设计举例操作助记符操作助记符 目的操作数目的操作数,源操作数源操作数;注释注释 操作助记符,它以符号形式给出该指令进行什么操作,如数据传送MOV 加ADD 减SUB和逻辑与AND等操作数可以是操作数本身,可以是寄存器,也可以是地址表达式有的
2、操作数隐含在助记符中(形式上无操作数),有的只有1个操作数,有的有2个操作数,有的有3个操作数,故符号指令的表示中使用了可选择符号 。3.1 3.1 符号指令格式符号指令格式指令格式:指令格式:标号:标号:操作码操作码 ,操作数操作数 ;注释注释标号:内存码段中存放该指令的第一个字节的地址。标号:内存码段中存放该指令的第一个字节的地址。操作码:操作的性质。操作码:操作的性质。操作数:操作的对象,可以是操作数本身或存放操作数:操作的对象,可以是操作数本身或存放操作数的内存操作数的内存(I/O端口端口)地址。地址。注释:查看程序用,不参加编译运行。注释:查看程序用,不参加编译运行。寻址方式寻址方式
3、:指令中如何求出操作数有效地址的方指令中如何求出操作数有效地址的方法法(1)(1)立即寻址立即寻址 (2)(2)寄存器寻址寄存器寻址(3)(3)直接寻址直接寻址 (4)(4)寄存器间接寻址寄存器间接寻址(5)(5)寄存器相对寻址寄存器相对寻址 (6)(6)基址变址寻址基址变址寻址(7)(7)相对基址变址寻址相对基址变址寻址3.2 3.2 8088/8086 CPU8088/8086 CPU的寻址方式的寻址方式寻址方式:寻找操作数的方式。寻址方式:寻找操作数的方式。计算机中操作数可以存放在以下几个地方:计算机中操作数可以存放在以下几个地方:指令代码中指令代码中,存放常量;,存放常量;MOV AX
4、,2070H寄存器中寄存器中:MOV AX,BX内存中内存中:MOV AX,2000HI/O端口中端口中:IN AL,40H码段码段堆栈段堆栈段数据段数据段附加数附加数据段据段码段码段1堆栈段堆栈段数据段数据段码段码段2每段的长度均小每段的长度均小于于64KB,即即16位寄存器能表示位寄存器能表示的最大范围的最大范围。(1)立即寻址立即寻址操作数直接放在指令中,紧跟在操作码的后面,操作数直接放在指令中,紧跟在操作码的后面,与操作码一起放在存储器的码段区域中。与操作码一起放在存储器的码段区域中。MOV AX,2030H B8 20304004H4003H4002H4001H4000H30H20H
5、B8H4004H4003H4002H4001H4000H20H30HB8H内存地址内存地址内存内容内存内容错误错误!高字节高字节 高地址高地址低字节低字节 低地址低地址AXAHAL20H30H(2)寄存器寻址寄存器寻址操作数放在操作数放在CPU内部的寄存器中,可以是内部的寄存器中,可以是8位或位或16位寄存器,位寄存器,注意源操作数和目的操作数的位数应注意源操作数和目的操作数的位数应一致。一致。MOV AX,BX;将将 BX中的内容传送到中的内容传送到AX中去中去MOV AL,BH;将将 BH中的内容传送到中的内容传送到AL中去中去MOV AL,BX错误错误!不匹配不匹配(3)直接寻址直接寻址
6、操作数存放在内存中,在指令中给出存放操作数操作数存放在内存中,在指令中给出存放操作数的的偏移地址偏移地址,如果不加说明,如果不加说明,默认的段基址是数默认的段基址是数据段据段。MOV AX,0020H;将将 数据段偏移地址为数据段偏移地址为0020H的地址中的内容传的地址中的内容传送到送到AX中去,相当于中去,相当于:MOV AX,DS:0020H12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,0020HAXAHAL3412AX:3412H也可以传送内存中其他段的数据,在相应的偏也
7、可以传送内存中其他段的数据,在相应的偏移地址前加段超越符移地址前加段超越符“:”。MOV AX,SS:0020H;将将 堆栈段偏移地址为堆栈段偏移地址为0020H的地址中的内容传的地址中的内容传送到送到AX中去中去MOV ES:0100H,BX如果不加段超越,默认为数据段的偏移地址。如果不加段超越,默认为数据段的偏移地址。(4)寄存器间接寻址寄存器间接寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址存放寄存器存放寄存器中。在指令中只给出这个寄存器。中。在指令中只给出这个寄存器。MOV AX,BXBX中存放操作中存放操作数的偏移地址数的偏移地址其中,作为间址的寄存器只能有其中
8、,作为间址的寄存器只能有4个:个:BX,SI,DI,BP,其他寄存器无此功能。其他寄存器无此功能。用用BP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SS,其余其余3个的段个的段基址默认为数据段基址默认为数据段DS,同时指令同时指令允许段超越允许段超越。12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,BXAXAHAL3412AX:3412HMOV BX,0020HMOV AX,ES:BX;传送的操作数在附加段传送的操作数在附加段ES中,偏移地址存放在中,偏移地址存放在BX中。中
9、。MOV BP,BX;将将BX中的内容传送到堆栈段中,其目的地的偏中的内容传送到堆栈段中,其目的地的偏移地址存放在移地址存放在BP中。中。MOV DI,2000H;将立即数将立即数2000H传送到数据段中,其目的地的传送到数据段中,其目的地的偏移地址存放在偏移地址存放在DI中。中。(5)寄存器相对)寄存器相对寻址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址需要计算。需要计算。偏移地址偏移地址寄存器内容寄存器内容指令中给定的偏移量指令中给定的偏移量MOV AX,SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是SI寄存器中的内容
10、加上寄存器中的内容加上0200H同样,作为变址的寄存器只能有同样,作为变址的寄存器只能有4个:个:BX,SI,DI,BP,其他寄存器无此功能。其他寄存器无此功能。用用BP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SS,其余其余3个的段个的段基址默认为数据段基址默认为数据段DS,同时指令同时指令允许段超越允许段超越。MOV AX,0200HBX变址寻址可以有多种格式:变址寻址可以有多种格式:MOV AX,BX+0200HMOV AX,0200H+BX例如:例如:DS:3000H,BX:1000H 数据所在的地址:数据所在的地址:高位:高位:31201H 低位:低位:31200H(6)基址加
11、变址寻址基址加变址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址由由两两部分相部分相加而成:加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容MOV AX,BX+SI;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BX寄寄存器中的内容存器中的内容加上加上SI寄存器中的内容寄存器中的内容基址寄存器只有基址寄存器只有2个:个:BX,默认的段基址为默认的段基址为DS;BP,默认的段基址为默认的段基址为SS。变址寄存器只有变址寄存器只有2个:个:SI和和DI。允许段超越。允许段超越。MOV AX,BX+SI+0200HMOV AX,02
12、00HBX+SIMOV AX,0200HBXSIMOV AX,0200HBXBPMOV AX,0200HSIDI必须是基址(必须是基址(BX或或BP)加变址(加变址(DI或或SI)MOV AX,0200HBP+SI;欲取的数据在堆栈段欲取的数据在堆栈段(7)相对)相对基址加变址寻址基址加变址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址是由三部分是由三部分相加而成:相加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容偏移量偏移量MOV AX,BX+SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BX寄寄存器中的内
13、容存器中的内容加上加上SI寄存器中的内容寄存器中的内容加上加上0200H基址寄存器只有基址寄存器只有2个:个:BX,默认的段基址为默认的段基址为DS;BP,默认的段基址为默认的段基址为SS。变址寄存器只有变址寄存器只有2个:个:SI和和DI。允许段超越。允许段超越。MOV AX,BX+SIMOV AX,BX+SIMOV AX,BXSIMOV AX,BXBPMOV AX,SIDI必须是基址(必须是基址(BX或或BP)加变址(加变址(DI或或SI)MOV AX,BP+SI;欲取的数据在堆栈段欲取的数据在堆栈段12H34H56H78H9AHBCHDEHF0H21000H21001H21002H210
14、03H21004H21005H21006H21007H10H20H30H40H50H60H70H80H23000H23001H23002H23003H23004H23005H23006H23007H1AH2AH3AH4AH5AH6AH7AH8AH31000H31001H31002H31003H31004H31005H31006H31007H1BH2BH3BH4BH5BH6BH7BH8BH33000H33001H33002H33003H33004H33005H33006H33007HDS:2000H SS:3000H BX:1000H BP:3000H SI:3004HMOV AX,3000HM
15、OV AX,BXMOV AX,3000HMOV AX,BXMOV AX,BPMOV AX,BPMOV AX,SIMOV SI,0002HMOV AX,BXSIMOV AX,BP+02HMOV AL,BX+06HMOV AX,BX+SI+4HAX:3000HAX:1000HAX:2010HAX:3412HAX:3000HAX:2B1BHAX:6050HSI:0002HAX:7856HAX:4B3BHAL:DEHAX:F0DEH3.3 8086/8088指令系统指令系统数据传送指令数据传送指令算术运算指令算术运算指令逻辑指令逻辑指令串操作指令串操作指令程序控制指令程序控制指令处理机控制指令处理机控
16、制指令3.3.1 数据传送指令数据传送指令 1.1)所有的所有的MOV传送指令都不能改变标志传送指令都不能改变标志2)CS,IP不能作为目的操作数不能作为目的操作数 MOV CS,AX3)两个段寄存器间不能直接传送两个段寄存器间不能直接传送 MOV SS,DS4)立即数不能直接传送给段寄存器立即数不能直接传送给段寄存器 MOV DS,2000H5)内存单元间不能直接传送内存单元间不能直接传送 MOV SI,2000H6)立即数不能作为目的操作数立即数不能作为目的操作数 MOV 1000H,AXMOV dest,srcMOV BL,AXMOV 100,CXMOV SI,AXMOV CS,AXMO
17、V SI,DIMOV BX,2DIMOV AX,CSMOV SS,2400HMOV AX,BP+4错误,不匹配错误,不匹配错误,立即数不能赋值错误,立即数不能赋值正确正确错误,错误,CS不能赋值不能赋值错误,内存间不能直接传送错误,内存间不能直接传送正确正确正确正确错误,段寄存器不能赋立即数错误,段寄存器不能赋立即数正确正确:堆栈是按先进后出的原则组织的一段内存区域,堆栈是按先进后出的原则组织的一段内存区域,一般作临时存储器用一般作临时存储器用(仓库仓库)。其指针。其指针SP为为16位的寄位的寄存器,始终指向栈顶存器,始终指向栈顶(货物堆放的位置货物堆放的位置)。堆栈的空。堆栈的空间大小是用户
18、指定的。间大小是用户指定的。SS:2000H ;堆栈段的段基址堆栈段的段基址 ;表示堆栈从表示堆栈从20000H处开始处开始20000H假设用户定义堆栈为假设用户定义堆栈为100个字节,个字节,则则SP自动设置为自动设置为0064H20064H100个字节个字节SP:0064H进栈:进栈:PUSH src出栈:出栈:POP destMOV AX,1234HPUSH AX20000H20064H100个字节个字节SP(1)SP-1SP AHSPSP12H(2)SP-1SP ALSPSP34H先减指针先减指针,再压数据再压数据,先高后低先高后低POP BX(1)SPBL SP+1SP(2)SPBH
19、 SP+1SP先出数据先出数据,再加指针再加指针,先低后高先低后高BLBHSPSP只能对只能对16位数进行操作,一次压入弹出两个字节位数进行操作,一次压入弹出两个字节PUSH AH必须对寄存器的内容或内存单元的内容进行操作必须对寄存器的内容或内存单元的内容进行操作PUSH 2000H设设SP为为0100H,SS为为2000H,PUSH BP后,栈顶后,栈顶的物理地址是:的物理地址是:20100H2H=200FEH下列指令中,错误的是:下列指令中,错误的是:A)PUSH DS B)POP CS C)PUSH 30HBXSID)MOV SI,ES:BPB)POP CSMOV AX,1000HPUS
20、H AXMOV BX,AXPUSH BXPUSH 1000H POP 1002HPOP AXPOP BX12H34H56H78H9AHBCHDEHF0H21000H21001H21002H21003H21004H21005H21006H21007H30000H30001H30060H30061H30062H30063H30064HDS:2000H SS:3000H SP:0064HSP:0064H100个字节个字节10H00HBX:1000H34H12H34H12H34H12HAX:3412HBX:1000HXCHG dest,src dest src在在寄存器之间寄存器之间,寄存器和内存之间
21、寄存器和内存之间的的8位位,16位位数数据可以相互交换。据可以相互交换。XCHG AL,AHXCHG AX,BX1)内存之间的数据不可相互交换内存之间的数据不可相互交换2)CS,IP不能参与交换不能参与交换3)段寄存器不能作为一个操作数段寄存器不能作为一个操作数(只与只与AX或或AL有关,与有关,与AH无关无关)输入输出指令输入输出指令CPU存储器存储器输入输入输出输出INOUTAX或或AL只能用只能用IN、OUT指令向外设发命令;指令向外设发命令;外设只能与外设只能与CPU内部寄存器内部寄存器AL或或AX进行数据传输。进行数据传输。IN AL,40H OUT 40H,AL IN AX,40H
22、 OUT 40H,AX8位位16位位(40H)AL(41H)AHAL (40H)AH (41H)IN AL,352H OUT 400H,AL 当外口地址大于当外口地址大于8位位(0FFH)时,用时,用DX作间址作间址MOV DX,352HIN AL,DX MOV DX,400HOUT DX,AL IN,OUT只能对只能对AL,AX操作,若传送的数据操作,若传送的数据为为16位,则外口地址只能取偶数。位,则外口地址只能取偶数。IN AX,35H XLAT使累加器使累加器AL中的一个值变换为存储器表格中的某中的一个值变换为存储器表格中的某一个值,一般用来实现编码码制的转换。一个值,一般用来实现编码
23、码制的转换。用用BX指向表的首地址,指向表的首地址,AL中的内容为表中某一中的内容为表中某一项与首地址之间的位移项与首地址之间的位移量。在执行查表指令时,量。在执行查表指令时,将将BX与与AL中的内容相加,中的内容相加,把得到的值作为地址,把得到的值作为地址,然后将此地址所对应单然后将此地址所对应单元中的值取到元中的值取到AL中去。中去。DS段段表格首地址表格首地址BX+ALAL11H20H33H22HBX AL+BX+0BX+ALBX+2BX+1AL执行该指令前,应该先建立一张表格,该表的最执行该指令前,应该先建立一张表格,该表的最大容量为大容量为256字节。字节。例例:将十进制数字将十进制
24、数字09变换成七段显示码的译码表变换成七段显示码的译码表+5Vabcdefgabcdefgabcdefg0100 00000abcdefg0111 1001140H79H40H79H24H30H19H12H02H78H00H10H0123456789例例:从从5号端口输入十进制数,转换为号端口输入十进制数,转换为7段码后输段码后输出到出到20号端口。号端口。40H79H24H30H19H12H02H78H00H10H01234567892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HIN AL,5HXLATOU
25、T 20H,AL例:向端口例:向端口40H送字符送字符35。40H79H24H30H19H12H02H78H00H10H01234567892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HMOV AL,3XLATOUT 40H,ALMOV AL,5XLATOUT 40H,AL2.地址传送指令地址传送指令LEA:取存储器取存储器单元单元的偏移地址的偏移地址LEA AX,2728H;地址为地址为2728H,AX为为2728H功能:将存储器地址送到一个寄存器。功能:将存储器地址送到一个寄存器。要求源操作数必须为存储器
展开阅读全文