您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 3第三章 8086指令系统(一)
第三章8086指令系统ZhengzhouInstituteofLightIndustryInstructionssetof8086/8088课程目标January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING《8086/8088指令系统》是学习和掌握汇编语言程序设计的基础:掌握8086微处理器的8种寻址方式理解8086的6大类指令学会选择不同指令完成相应的功能目的:通过学习8086微处理器的寻址方式、指令系统,达到理解各种寻址方式的异同、使用环境,可根据要求能够选择的指令以完成相应操作。能力。教学内容January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.18086指令格式3.28086寻址方式3.38086指令系统3.18086指令格式3.28086寻址方式第三章8086指令系统3.38086指令系统January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING掌握8086指令的基本格式理解8086各类指令参考8086指令表可以熟练编写程序学习目的了解堆栈的工作原理January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING学会使用数据寻址方式构造汇编语句3.18086指令格式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.1.18086机器语言指令格式如:B83412:B8是操作码,3412是操作数.MOVAX,1234H051200:05是操作码,1200是操作数.ADDAX,12HB012:B0是操作码,12是操作数.MOVAL,12H操作码说明CPU要完成或执行哪种操作,它是指令中不可缺少的组成部分。操作数指出指令操作需要的数据或数据所在的地址。操作数操作码4004H4003H4002H4001H4000H05H12H34HB8H……4006H4005H……00H12H3.1.18086机器语言指令格式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING段前缀:也称段跨越或段超越,在指令中指明程序的操作是在四个段中的哪个段完成,缺省则在默认段中执行。操作码:说明CPU要完成或执行哪种操作,它是指令中不可缺少的组成部分。寻址方式:说明采用何种方式查找操作数,指明微处理器将要完成的操作的操作数的来源和结果的去向。数据:在立即寻址中机器指令中给出的操作数偏移量:在相对、变址寻址中操作数的相对地址是由寄存器值与相对偏移量之和构成。段前缀操作码寻址方式数据/偏移量数据数据数据/偏移量3.18086指令格式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.1.28086汇编语言指令格式Start:MOVAX,1234H;将1234赋给AX寄存器ADDAX,12H;操作数,即操作的对象,可以是操作数本身或存放操作数的内存(I/O端口)地址,可以有0个、1个或2个。操作数指出指令需要的操作数或操作数所在的地址。;注释标号:助记符目的操作数,源操作数3.18086指令格式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.1.3机器语言指令与汇编语言指令区别及联系①机器指令由特定的二进制代码组成,不同的二进制代码代表不同的操作;汇编指令用英文助记符(字母缩写)表示机器指令。②机器指令不便理解,记忆,编程;汇编相对容易理解③机器指令可直接执行;CPU不识别汇编指令,需要把汇编指令编写的程序汇编(翻译)为机器指令。④一条汇编指令对应一条机器指令。3.28086数据寻址方式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING计算机中操作数可以存放如下位置:操作数寻址方式:寻找操作数的方式,指明微处理器将要完成的操作的数据的来源和结果的去向。①指令代码中,存放常量:MOVAX,2070H②寄存器中:MOVAX,BX③内存中:MOVAX,[2000H]④I/O端口中:INAL,40H8086中有8种数据寻址方式,寻址方式越多,编程越灵活3.28086数据寻址方式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.2.1立即寻址操作数直接存放在指令中,紧跟在操作码之后(操作数作为指令的一部分存放在主存单元中)与操作码一起放在存储器的代码段区域中,这个操作数被称为立即数。指令格式:助记符立即数如:MOVAX,1234H;1234H是操作数ADDAX,12;12是操作数.3.28086数据寻址方式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.2.1立即寻址8位16位无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数80H-7FH(-128~127)8000H-7FFFH(-32768~32767)立即数的取值范围3.28086数据寻址方式January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.2.1立即寻址①立即数只能用作源操作数MOVAX,0ED7FH;正确MOVBL,8FH;正确MOVDL,F8H;F8H前需0MOVFA37H,BX;错误②输入字符需用单引号MOVAL,’B’;将B的ASCII值42H赋给AL③立即数的存储顺序MOVAX,2030H;机器码B830204004H4003H4002H4001H4000H……20H30HB8H……内存地址存储内容8086采用的是小端存储方式高字节高地址低字节低地址AXAHAL20H30HJanuary28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.1立即寻址操作数放在CPU内部的寄存器中,可以是8位或16位寄存器。MOVAX,BX;将BX中的内容传送到AX中去MOVAL,BH;将BH中的内容传送到AL中去January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.2、寄存器寻址指令格式:操作码目的操作数(寄存器),源操作数(寄存器)January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.2、寄存器寻址MOVAL,BX错误!不匹配SHLAX,CL;只能是CL寄存器①源操作数和目的操作数的位数一般应一致②段寄存器只能通过通用寄存器赋值,段寄存器之间不能赋值,不允许将立即数传送到段寄存器③代码段寄存器一般不用MOV指令改变MOVDS,CSMOVCS,AX;汇编可以通过,但导致运行出错错误!正确!MOVAX,CS;可以通过这两条指令实现MOVDS,AX操作数存放在内存中,在指令中给出存放操作数的偏移地址。指令格式:操作码寄存器,16位偏移地址操作码16位偏移地址,寄存器January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.3直接数据寻址MOVAX,[0020H];将数据段偏移地址为0020H的地址中的内容传送到AX中去,相当于:MOVAX,DS:[0020H]MOVES:[0020H],AX;将AX中的内容传送到附加段偏移地址为0020H地址去January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.3直接数据寻址……………………12H34H56H…………代码段堆栈段数据段……0000H0001H……00A0H00A1H00A2H…………DS:4000H偏移地址存储内容MOVAX,[00A0H]3412AXAHALAX:3412H直接数据寻址有两种基本形式:①直接寻址(DirectAddressing)用于存储单元与AL、AX之间的MOV指令,三字节指令MOVNumber,AL;标号Number须在数据段指明MOVAX,[00A0H]MOVAX,ES:[00A0H];扩展段偏移地址为00A0H的地址中的内容传送到AX中去②位移量地址(DisplacementAddressing)用于存储单元与非AL、AX寄存器操作的指令,四个字节及以上。MOVBX,[00A0H]MOVCL,DS:[00A0H]January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.3直接数据寻址January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.3直接数据寻址指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操作数的物理地址为:20000H+3102H=23102H指令执行后:(AX)=ABCDHMOV操作码02H31HAHAL23102HCDHABH代码段数据段..操作数存放在内存中,但其偏移地址存放在指令中给出寄存器内。January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.4寄存器间接寻址指令格式:操作码寄存器,[间址寄存器BX、BP、SI、DI]操作码[间址寄存器BX、BP、SI、DI],寄存器MOVAX,[BX]BX中存放源操作数的偏移地址MOV[BX],AXBX中存放目的操作数的偏移地址①作为间接寻址的寄存器只能是:BP,BX,SI,DI。②用BP寻址,段基址默认为堆栈段SS,其余3个的段基址默认为数据段DS,同时指令允许段超越。January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.4寄存器间接寻址③在有些情况下,间接寻址要求用汇编伪指令BYTEPTR,WORDPTR及DWORDPTR规定传送的数据长度………………12H34H56H…………代码段堆栈段数据段……0000H0001H……0020H0021H0022H…………DS:4000H偏移地址内容MOVAX,[BX]AXAHAL3412AX:3412HMOVBX,0020HJanuary28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNCATIONENGINEERING3.28086数据寻址方式3.2.4寄存器间接寻址MOVAX,ES:[BX];传送的操作数在附加段ES中,偏移地址存放在BX中。MOV[BP],BX;将BX中的内容传送到堆栈段中,其目的偏移地址存放在BP中。MOV[DI],AX;将AX的内容传送到数据段中,其目的地的偏移地址存放在DI中。January28,2020SuRi-jianCOLLEGEOFCOMPUTER&COMMUNC
本文标题:3第三章 8086指令系统(一)
链接地址:https://www.777doc.com/doc-3361716 .html