




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 8088/8086指令系统指令系统3-1 概概 述述基本知识点基本知识点 指令:告诉计算机如何处理数据的命令。指令:告诉计算机如何处理数据的命令。一条指令包括如下内容:一条指令包括如下内容:1)操作码:指令所执行的操作。)操作码:指令所执行的操作。2)操作数:指令操作的对象,包括操作数的)操作数:指令操作的对象,包括操作数的来源,操作结果的去向。操作对象通常为来源,操作结果的去向。操作对象通常为存储器地址,寄存器或立即数。存储器地址,寄存器或立即数。例:例:MOV AX, 03H地址码地址码MOV操作码操作码地址码地址码AX, 03H目的目的操作数操作数AX,源操作数源操作数03
2、H2、指令系统:、指令系统: 计算机所能执行的全部指令的集合。计算机所能执行的全部指令的集合。 RISC(精简指令集)计算机技术。(精简指令集)计算机技术。 CISC(复杂指令集)计算机技术。(复杂指令集)计算机技术。3、寻址方式:、寻址方式: 指令中说明操作数所在地址及获得转指令中说明操作数所在地址及获得转移地址的方法。移地址的方法。 : 地址地址 例:例: DI 2000( ):内容):内容 例例:(:(DI) (20000) 操作数的主要来源:操作数的主要来源: 立即数操作数立即数操作数可以是可以是8位、位、16位的常数。位的常数。注:只能做源操作数,不能做目的操作数。注:只能做源操作数
3、,不能做目的操作数。例:例: MOV AX,1234H 寄存器操作数寄存器操作数是某个是某个8或或16位寄存器中的内容。位寄存器中的内容。例:例:MOV AX,BX 存储器操作数存储器操作数来自来自1个,个,2个或个或4个存储单元的内容。个存储单元的内容。例:例: MOV AX,1234H二、指令的执行时间二、指令的执行时间意义:意义: 在特殊的定时,延时程序中必需了在特殊的定时,延时程序中必需了解指令的执行时间。解指令的执行时间。一条指令的执行时间包括:一条指令的执行时间包括: 取指令、取操作数、执行指令及传取指令、取操作数、执行指令及传送结果因素,用时钟周期表示。送结果因素,用时钟周期表示
4、。例:例:对对MOV指令,指令,CPU时钟频率为时钟频率为5MHZ则从则从寄存器到寄存器之间寄存器到寄存器之间立即数传送到寄存器立即数传送到寄存器存储器传送字节到寄存器存储器传送字节到寄存器的传送指令执行的时间为:的传送指令执行的时间为:寄存器操作数的指令执行速度最快,立即数操寄存器操作数的指令执行速度最快,立即数操作数次之,存储器操作数指令的执行时间最长。作数次之,存储器操作数指令的执行时间最长。3-2、说明操作数所在地址的寻址方式、说明操作数所在地址的寻址方式1、立即寻址、立即寻址:操作数直接包含在指令中。:操作数直接包含在指令中。立即数:立即数:所需的操作数由指令的地址码部分直接给出。所
5、需的操作数由指令的地址码部分直接给出。立即数可以是立即数可以是8位(位(bit)的字节,也可以是)的字节,也可以是16位的字或位的字或32位的双字。位的双字。例:例:MOV AX,03HM:CS:0003CS:000203CS:0001B8CS:0000000000特点:取指时,操作码和一个操作数同时被取特点:取指时,操作码和一个操作数同时被取出,不必再次访问存储器,提高了指令的执行出,不必再次访问存储器,提高了指令的执行速度,通常用于给某一寄存器或存储单元赋初速度,通常用于给某一寄存器或存储单元赋初值。值。 注:目的操作数不能为立即数。注:目的操作数不能为立即数。2、寄存器寻址、寄存器寻址:
6、操作数包含在:操作数包含在CPU 的的内部寄存器中。内部寄存器中。例:例: MOV DS,AX3、直接寻址、直接寻址:操作数的偏移地址放在地:操作数的偏移地址放在地址码存储器的数据段中。址码存储器的数据段中。例:例:MOV AX,DS:2000H MOV AX,2000M:CS:000320CS:000200CS:0001A1CS:0000若:若:DS=0100:030100:2000:0100:1FFFPA=(DS)16+ 偏移地址偏移地址 4、寄存器间接寻址、寄存器间接寻址:操作数在存储器中,:操作数在存储器中,但存储单元的偏移地址放在寄存器(但存储单元的偏移地址放在寄存器(SI、DI、B
7、P、BX)之一中。)之一中。1)当寄存器为)当寄存器为SI、DI、BX时;时; 例:例: MOV AX, SI PA=(DS) 16 + SI、DI、BX 若:若: DS=2000;SI=1000 则操作数的物理地址为?则操作数的物理地址为?2)当寄存器为)当寄存器为BP 时;时; 例:例: MOV AX, BP PA=(SS) 16 + BP (段超越时例外)(段超越时例外)已知:已知: SS=3000H , BP=2000H,则,则 操作数的物理地址?操作数的物理地址?5、寄存器相对寻址、寄存器相对寻址:操作数在存储器中,:操作数在存储器中,操作数的偏移地址由指令指定的寄存器操作数的偏移地
8、址由指令指定的寄存器BX、BP、SI、DI和指令中给定的位移量和指令中给定的位移量(DISP)相加获得。)相加获得。例:例: MOV AX,DI+1000H MOV AX, DI 1000 PA=(DS) 16 + SI、DI、BX + 位移量位移量PA=(SS) 16 + BP + 位移量位移量6、基址、变址寻址、基址、变址寻址: 由基址寄存器由基址寄存器(BX、BP)和变址寄存器()和变址寄存器(SI、DI)联)联合提供操作数的偏移地址。合提供操作数的偏移地址。例:例: MOV AX, BX SI PA=(DS) 16 +BX+ SI、DIPA=(SS) 16 + BP+ SI、DI7、基
9、址、变址、相对寻址:、基址、变址、相对寻址: 操作数的偏移地址由基址寄存器、变址操作数的偏移地址由基址寄存器、变址寄存器和指令中给定的位移量相加得到。寄存器和指令中给定的位移量相加得到。例:例: MOV AX, BP SI 2000H PA=(DS) 16 +BX+ SI、DI+偏移量偏移量PA=(SS) 16 + BP+ SI、DI+偏移量偏移量8、隐含寻址:、隐含寻址: 操作数的地址隐含在指操作数的地址隐含在指令操作码中。令操作码中。例:例: MUL BL DIV DL 例例1:已知:已知DS=1000H,ES=2000H,SS=3800H,SI=1010H,BX=0200H,BP=002
10、0H,请指出,请指出下列指令的源操作数字段是什么寻址方式?源下列指令的源操作数字段是什么寻址方式?源操作数字段的物理地址是多少?操作数字段的物理地址是多少?1)MOV AL,1000H2)MOV AH,SI3)MOV AX,BP4)MOV AL,BYTY PTR BXSI5)ADD AX,BP+106)ADD AL,ES:BX7)MOV AL,BXSI+88)MOV AL,ES:BX+SI例2、设有关寄存器及存储单元内容为:DS=1000H,ES=1110H,BX=0110H,SI=0002H,试说明下列各条指令执行完后AX中的内容。101035510110221011133101124411
11、2100AA112110BB112120CC112130DD1)MOV AX,ES:BX2)MOV AX,ES:BX SI 3)MOV AX,1200H4)MOV AX,BX5)MOV AX, 1210H 6)MOV AX,BX7)MOV AX,1100H BX 8)MOV AX,BX+SI9)MOV AX,BX+SI+1100H10)MOV AX,SI作业:作业:152页3-1、3-23-3 8086 的指令系统的指令系统 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 串操作指令串操作指令 程序控制指令程序控制指令 处理器控制指令处理器控制指令常用符号常用符号
12、 OPRD(OP1、OP2)操作数操作数 mem 存储器操作数存储器操作数 acc累加器操作数累加器操作数 dest目的操作数目的操作数 src源操作数源操作数 disp偏移量,用符号地址表示偏移量,用符号地址表示 DATA立即数立即数 port输入输出端口,可用数字或表达式。输入输出端口,可用数字或表达式。 ( ) 一、数据传送指令一、数据传送指令1、MOV指令指令格式:格式:MOV OP1 ,OP2 操作码操作码 目的目的 源源功能:功能:把一个字节或一个字的把一个字节或一个字的OP2送到送到 OP1中。中。说明:说明:源操作数可以是寄存器、存储器源操作数可以是寄存器、存储器以及立即数,而
13、目的操作数可以是寄以及立即数,而目的操作数可以是寄存器和存储器。存器和存储器。通用寄存器通用寄存器AX、BX、CX、DX、BP、SP、SI、DI、AL、AH、BL、BH、CL、CH、DL、DH存储器存储器立即数立即数段寄存器段寄存器CS、DSES、SSCS只能作只能作源操作数源操作数 MOV指令举例:指令举例:1)CPU内部寄存器之间传送数据:内部寄存器之间传送数据:MOV AL,BL ;8位数据传送指令(位数据传送指令(1字节)字节)MOV AX,DX ;16位数据传送指令(位数据传送指令(1字)字)MOV SI, BP ;16位数据传送指令(位数据传送指令(1字)字)2)立即数传送至通用寄
14、存器:)立即数传送至通用寄存器:MOV CL,4 ; 8位数据传送位数据传送MOV AX,03FFH ;16位数据传送位数据传送 MOV指令举例:指令举例:3)寄存器()寄存器(CS和和IP除外)与存储器间的数据传送除外)与存储器间的数据传送 MOV AL,BUFFER MOV AX,SI MOV DI,CX MOV SI,BLOCK BP MOV DS,DATASI+BX MOV DESTBP+DI,ES 注意:注意:MOV指令不能在两个存储器之间进行数据直指令不能在两个存储器之间进行数据直接传送。接传送。MOV指令不能在两个段寄存器之间进行数据指令不能在两个段寄存器之间进行数据直接传送。直
15、接传送。立即数不能直接传送给段寄存器。立即数不能直接传送给段寄存器。目的操作数不能为目的操作数不能为CS和和IP。 其中(其中(1)(3)的传送可用通用寄存器作为)的传送可用通用寄存器作为中介,用两条传送指令;中介,用两条传送指令;例:例:MOV AL,AREA1 MOV AREA2,AL例:将内存中以例:将内存中以AREA1为首地址的为首地址的100个字节数个字节数据搬移到以据搬移到以AREA2为首地址的内存中去。为首地址的内存中去。MOV SI,OFFSET AREA1MOV DI,OFFSET AREA2MOV CX,100AGAIN:MOV AL,SIMOV DI,ALINC SIIN
16、C DIDEC CXJNZ AGAIN。AREA2。44。33。22。11AREA12、交换指令、交换指令 XCHG指令指令格式:格式:XCHG OP1 ,OP2功能:功能:交换两个操作数。交换两个操作数。说明:说明:指令中的两个操作数可以是两个寄存器操指令中的两个操作数可以是两个寄存器操作数,或一个寄存器与一个存储器操作数。作数,或一个寄存器与一个存储器操作数。(段寄存器不能作为一个操作数)(段寄存器不能作为一个操作数)举例:举例:XCHG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER3、地址传送指令、地址传送指令1)LEA指令指令格式:格式:LEA
17、OP1 ,OP2功能:功能:将将OP2的偏移地址送入通用寄存器的偏移地址送入通用寄存器OP1。说明:说明:OP1必须是通用寄存器,必须是通用寄存器,OP2必须为存储必须为存储单元。(传送的是单元。(传送的是OP2的偏移地址,不是内容)的偏移地址,不是内容)举例:举例:LEA BX,BUFR ;将;将BUFR的偏移地的偏移地 址送入址送入BX中中。3、地址传送指令、地址传送指令2)LDS指令指令格式:格式:LDS OP1 ,OP2功能:功能:完成一个地址指针的传送。(段地址和偏完成一个地址指针的传送。(段地址和偏移地址的传送)段地址送入移地址的传送)段地址送入DS,偏移地址送入,偏移地址送入一个
18、一个16位的指针寄存器或变址寄存器。位的指针寄存器或变址寄存器。说明:说明:OP1为一个为一个16位的指针或变址寄存器,位的指针或变址寄存器, OP2为存储器。为存储器。举例:举例:LDS SI, BX 3)LES指令指令 与与LDS指令相同,只是段地址送入指令相同,只是段地址送入ES。4、堆栈指令、堆栈指令 堆栈是内存中的一个特定区域,由堆栈是内存中的一个特定区域,由SS的内容和的内容和SP的内容来决定。堆栈操作具有先入后出的特点。的内容来决定。堆栈操作具有先入后出的特点。 PUSH堆栈压入指令堆栈压入指令 格式:格式: PUSH OP功能:功能:将将OP中的内容放入堆栈段中中的内容放入堆栈
19、段中 POP 堆栈弹出指令堆栈弹出指令 格式:格式:POP OP功能:功能:将堆栈段中的内容弹出到将堆栈段中的内容弹出到OP。说明:说明:OP可以是段寄存器(可以是段寄存器(CS除外)、通用寄除外)、通用寄存器或内存的字。存器或内存的字。8000:2005H8000:2004H8000:2003H8000:2002H8000:2001H8000:2000H8000:1FFFH8000:1FFEH8000:1FFDH8000:1FFCH8000:1FFBH8000:1FFAHSS=8000H SP=2004HSS:SPA B C D E F G HABCDEFGHSS:SPSS:SPSS:SP压
20、栈时:压栈时:SP-1,高字节送入,高字节送入SP 所指单元所指单元。出栈时:出栈时:SP 所指单元内容弹出到低位;所指单元内容弹出到低位; SP-1。8000:2005H8000:2004H8000:2003H8000:2002H8000:2001H8000:2000H8000:1FFFH8000:1FFEH8000:1FFDH8000:1FFCH8000:1FFBH8000:1FFAH堆栈操作举例:堆栈操作举例:MOV AX,8000HMOV SS,AXMOV SP,2000HMOV DX,3E4AHPUSH DXPUSH AXPOP DXPOP AX3E4A8000AX=3E4AH DX
21、=8000H课堂练习:课堂练习:判断下列指令是否正确,若错误,为什么?判断下列指令是否正确,若错误,为什么?PUSH DS POP CS2、MOV CL,10003、MOV BX,SI4、MOV AH,BH5、MOV AX,SI6、PUSH AL7、MOV CL,AX1.8、MOV CS,AX二、算术运算指令二、算术运算指令存储器存储器通用通用寄存器寄存器通用通用寄存器寄存器立即数立即数存储器存储器通用通用寄存器寄存器通用寄存器通用寄存器存储器存储器 二、算术运算指令二、算术运算指令1、加法和减法指令、加法和减法指令1)ADD加法指令和加法指令和SUB减法指令减法指令格式:格式:ADD OP1
22、,OP2功能:功能:OP1+OP2送送OP1 格式:格式: SUB OP1,OP2功能:功能:OP1-OP2送送OP1注:这些指令执行时对标志位注:这些指令执行时对标志位CF,OF, PF,SF,ZF和和AF都会产生影响。都会产生影响。 举例:举例:ADD AL,30ADD AX,SIADD SI, AXADD BX,3FFHADD BETASI,100SUB CX,BXSUB AX,2AH二、算术运算指令二、算术运算指令2)带进位加法指令带进位加法指令ADC和带借位减法指和带借位减法指令令SBB。格式:格式:ADC OP1,OP2功能:功能:OP1+OP2+CF送送OP1 格式:格式: SB
23、B OP1,OP2功能:功能:OP1-OP2-CF送送OP1说明:与说明:与ADD和和SUB相类似,只不过还相类似,只不过还要加或减去要加或减去CF的当前值,主要用于多的当前值,主要用于多字节的加减运算。字节的加减运算。 举例:举例:计算计算45678998H+56789012H,并将结果保存到,并将结果保存到0010。MOV AX,8998ADD AX,9012MOV 0010,AXMOV AX,4567ADC AX,5678MOV 0012,AXDS:0010AADS:001119Ds:0012Ds:0013E09B9BE019AA对标志位对标志位C、S、O、A、Z、P有影响。有影响。AX
24、=19AA CF=1Ax=9BDF+1 =9BE03)INC加加1和和DEC减减1指令指令格式:格式:INC OP DEC OP功能:功能:OP+1送送OP OP-1送送OP说明:常用于循环程序中修改地址指针和循环次说明:常用于循环程序中修改地址指针和循环次数。数。OP可以是通用寄存器,也可以是内存单可以是通用寄存器,也可以是内存单元。对标志位元。对标志位A、O、P、S和和Z有影响,对有影响,对CF不产生影响。不产生影响。举例:举例:INC AL DEC BXINC BYTE PTR SI DEC BYTE PTR DI4)NEG求补指令求补指令格式:格式:NEG OP 功能:功能:对对OP求
25、补码(求补码(0-OP) ,结果送回,结果送回OP。说明:对说明:对-128或或-32768求补时,操作数不变,但求补时,操作数不变,但标志位标志位OF=1。该指令对。该指令对A、O、C、P、S、Z有有影响,一般总会使影响,一般总会使CF=1,除非在,除非在OP=0时时CF=0。 补码补码正数补码正数补码求反求反+1负数补码负数补码00000000011111111+100000000010000000111111110+111111111-120000001011111101+111111110-230000001111111100+111111101-3126011111101000000
26、1+110000010-1261270111111110000000+110000001-12710000000-128例:对3求补00000000 00000011 11111101 MOV AX,03HNEG AXCF=1、AF=1、SF=1PF=0、OF=0、ZF=05)CMP比较指令比较指令格式:格式:CMP OP1,OP2功能:功能:比较比较OP1,OP2的大小(的大小(OP1-OP2),只),只影响标志位,不影响影响标志位,不影响OP1和和OP2的内容。的内容。说明:说明:OP1可为寄存器和内存单元;可为寄存器和内存单元;OP2可为立可为立即数、通用寄存器或内存单元。常用于条件转即
27、数、通用寄存器或内存单元。常用于条件转移指令的条件判断。移指令的条件判断。举例:举例:MOV AX,04FFH CMP AX,1234H 0000010011111111 0001001000110100 1111001011001011AX=?C、A、P、O、Z、SCMP指令判断的条件:指令判断的条件:OP1=OP2时时当操作数为无符号数时(不会溢出当操作数为无符号数时(不会溢出OF=0)若若CF=0 则则OP1OP2 ;CF=1则则OP1OP2,SF=1时时OP1OP2,SF=1时时OP1OP2当当OF=1时:时:则则SF=0时时OP1 OP2ZF=1OF SF=0时时OP1OP2; OF
28、 SF=1时时OP1(CX)则转至)则转至BLGER标号执行。标号执行。(AX)(DX)则转至)则转至BLGER标号执行。标号执行。a.(BX)(DX)则转至)则转至LESS标号执行。标号执行。指出下列指令的错误指出下列指令的错误,并加以改正。并加以改正。MOV DS,1000HMOV 1020H,DXSUB 1000H, SI PUSH ALMOV DS,ESSHR DX,4OUT 380H,AXADD AL,BXPOP CSMOV CL,3300H 不能将立即数送给段寄存器。不能将立即数送给段寄存器。立即数不能做目的操作数。立即数不能做目的操作数。两个存储单元间不能直接传送数据两个存储单元
29、间不能直接传送数据堆栈操作必须是一个字数据堆栈操作必须是一个字数据两个段寄存器间不能直接传送数据两个段寄存器间不能直接传送数据移位次数大于移位次数大于1时用时用CL表示。表示。端口号大于端口号大于256时,必须用时,必须用DX表示表示传送数据位数不匹配传送数据位数不匹配CS不能做目的操作数不能做目的操作数传送数据位数不匹配传送数据位数不匹配第四章第四章 汇编语言程序设计汇编语言程序设计 汇编语言是一种介于汇编语言是一种介于机器语言机器语言和和高级语高级语言言之间的计算机编程语言,是一种面向机之间的计算机编程语言,是一种面向机器的语言。它和机器码有一一对应的关系,器的语言。它和机器码有一一对应的
30、关系,所以允许程序员用汇编语言直接对寄存器、所以允许程序员用汇编语言直接对寄存器、存储器、存储器、I/O端口以及端口以及CPU内部的许多硬件内部的许多硬件进行操作,因此用汇编语言可以编写出高进行操作,因此用汇编语言可以编写出高质量的程序,用汇编语言编写的程序占用质量的程序,用汇编语言编写的程序占用内存少,执行速度快。内存少,执行速度快。 机器码指令构成的指令系统叫机器语言(二进机器码指令构成的指令系统叫机器语言(二进制代码)。机器语言是能被计算机识别的惟一制代码)。机器语言是能被计算机识别的惟一语言。语言。例如:例如:MOV AX,im (B8)MOV DX,im (BA)MOV CX,im
31、(B9)MOV BX,im (BB)PUSH AX (50)PUSH DX (52)PUSH CX (51)PUSH BX (53)POP AX (58)POP DX (5A)POP CX (59)POP BX (5B)汇编语言程序必须先翻译成机器语言程序才能执行。汇编语言程序必须先翻译成机器语言程序才能执行。 由汇编语言程序翻译成机器语言程序的过程,由汇编语言程序翻译成机器语言程序的过程,称为称为汇编。汇编。完成汇编过程的系统程序称为完成汇编过程的系统程序称为汇编语汇编语言程序言程序或称为或称为源程序。源程序。 汇编汇编语言程序语言程序翻译翻译机器机器语言程序语言程序执行执行汇编程序汇编程序
32、 ASM 小汇编小汇编 MASM 宏汇编宏汇编推荐两个汇编网站推荐两个汇编网站http:/http:/ 一、汇编语言的语句格式一、汇编语言的语句格式语句格式:语句格式: 标号标号 指令助记符指令助记符 操作数操作数 ;注解;注解例:例:BINASC: MOV AX,BX ;将;将BX的内容传送给的内容传送给AX MOV AX,BX ;将;将BX的内容传送给的内容传送给AX PUSH AX ;将;将AX中的内容压栈中的内容压栈 RET ;返回主程序;返回主程序 MOV AX,1234H源程序的书写格式:源程序的书写格式: 各部分之间至少用一个空格分开,各语句间隔均匀。各部分之间至少用一个空格分开
33、,各语句间隔均匀。1、标号:给某一存储单元地址所起的名字。、标号:给某一存储单元地址所起的名字。 字母:字母:AZ 数字:数字:09 特殊字符:?特殊字符:? . _ $例:例:BINASC: MOV AX,BX S2: MOV AX,BX BIG?:?: MOV AX,BX注意:注意:数字不能作名称的第一个字符。圆点只能用作第数字不能作名称的第一个字符。圆点只能用作第一个字符,标号最长为一个字符,标号最长为31个字符。当名称后跟:时,个字符。当名称后跟:时,表示是标号,它代表该行指令的起始地址。当名称后表示是标号,它代表该行指令的起始地址。当名称后不带:时,也可能是变量。伪指令和段间调用时标
34、号不带:时,也可能是变量。伪指令和段间调用时标号不带冒号。不带冒号。例:例: S5 IN AL,DX DATA DB 10 DUP(0)2、指令助记符、指令助记符 8088指令助记符:指令助记符:8088指令。表示要指令。表示要CPU完成什么具体操作,必要时可在助完成什么具体操作,必要时可在助记符前加前缀。记符前加前缀。例:例: MOV、ADD、SHL; REP RCL 伪指令(指示语句):伪指令(指示语句):不要求不要求CPU执行执行某种操作,汇编时也不产生对应的机器某种操作,汇编时也不产生对应的机器代码,而仅仅给汇编程序提供汇编信息。代码,而仅仅给汇编程序提供汇编信息。3、操作数:指令执行
35、的对象。、操作数:指令执行的对象。 可有一个,两个或没有。对伪指令可有多可有一个,两个或没有。对伪指令可有多个操作数,操作数之间用逗号分开。操作数可个操作数,操作数之间用逗号分开。操作数可以是常数、寄存器名、标号、变量、也可以是以是常数、寄存器名、标号、变量、也可以是表达式。表达式。4、注解:对源程序语句的注解。、注解:对源程序语句的注解。 注解一般都用英语,在支持汉字的操作系注解一般都用英语,在支持汉字的操作系统中,也可使用中文。统中,也可使用中文。二、常数二、常数汇编语言语句中可使用的常数:汇编语言语句中可使用的常数:1、二进制数、二进制数 例:例:01001010B2、八进制数、八进制数
36、 例:例:112Q或或112O3、十进制数、十进制数 例:例:85D 或或 854、十六进制数、十六进制数 例:例:10H、2AH、0ABH、0F123H5、十进制浮点数、十进制浮点数 例:例:12E 26、十六进制实数、十六进制实数 例:例:0FFFFFFFFR7、字符和字符串、字符和字符串 例:例:A、3、X三、伪指令三、伪指令1、定义数据伪指令:用来定义存储空间及其所、定义数据伪指令:用来定义存储空间及其所存数据的长度。存数据的长度。 DB定义字节数据定义字节数据 DW定义字数据定义字数据 DD定义双字数据定义双字数据 DQ定义定义4个字长数据个字长数据 DT定义定义10个字长数据个字长
37、数据例:例:DATA1 DB 5,6,7 DATA2 DW 1,2,1A34H DATA3 DD 5,6,1A34HDATA1050607DATA201000200341ADATA305000000062、符号定义伪指令、符号定义伪指令EQU EQU:给符号定义一个值。:给符号定义一个值。例:例:S2 EQU 50 MOV CX,S23、段定义伪指令、段定义伪指令SEGMENT和和ENDS 一个完整的源程序由一个完整的源程序由3个段组成:堆栈段、个段组成:堆栈段、数据段、代码段。数据段、代码段。 SEGMENT:定义一个段开始。一个段必须有:定义一个段开始。一个段必须有一个名称来标识。一个名称
38、来标识。 ENDS:说明一个段的结束,和:说明一个段的结束,和SEGMENT成成对使用。对使用。格式:格式: 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 段名段名 ENDSSEGMENT伪指令的书定格式:伪指令的书定格式: 段名:段名:给定义的段所起的名字。给定义的段所起的名字。例:例: STACK SEGMENT STACKDW 20 DUP(?)(?) STACK ENDS 定位类型:定位类型:表示该段起始地址开始于何处,可表示该段起始地址开始于何处,可以是字节型(段起始地址可以位于任何地方)、以是字节型(段起始地址可以位于任何地方)、字型(段起始地址必须位于偶
39、数地址)、节型字型(段起始地址必须位于偶数地址)、节型(PARA,段起始地址必须能被,段起始地址必须能被16除尽)、页除尽)、页型(型(PAGE,段起始地址可被,段起始地址可被256除尽),当定除尽),当定位类型缺省时,默认为是节型。(位类型缺省时,默认为是节型。(XXXX0H) 组合类型:组合类型:告诉连接程序,该段和其它段的组合关系,告诉连接程序,该段和其它段的组合关系,连接程序可以将不同模块的同名段进行组合。连接程序可以将不同模块的同名段进行组合。NONE表明本段与其它段逻辑上不发生关系。表明本段与其它段逻辑上不发生关系。PUBLIC表明本段与其它模块中用表明本段与其它模块中用PUBLI
40、C说明的同名说明的同名段连接成一个逻辑段,运行时装入同一个物理段中,段连接成一个逻辑段,运行时装入同一个物理段中,使用同一个段地址。使用同一个段地址。STACK每个程序模块中,必须有一个堆栈段。将具有每个程序模块中,必须有一个堆栈段。将具有STACK类型的同名段连接成一个大堆栈,由各模块共类型的同名段连接成一个大堆栈,由各模块共享。享。COMMON连接时重叠放在一起。连接时重叠放在一起。MENORY连接时,将被放在所装载程序的最后存储区。连接时,将被放在所装载程序的最后存储区。AT表达式表达式表明该段的段地址是表达式所给定的值。表明该段的段地址是表达式所给定的值。 类别:表明该段的类别。类别:
41、表明该段的类别。 代码段(代码段(CODE)、数据段()、数据段(DATA)、堆栈段)、堆栈段(STACK) ASSUME 段分配伪指令段分配伪指令 格式:格式: ASSUME 段寄存器:段名段寄存器:段名 ,段寄存器:段名,段寄存器:段名, 用于说明源程序中定义的段或组由哪个寄存器去寻址,用于说明源程序中定义的段或组由哪个寄存器去寻址,即建立寄存器与段间的对应关系。即建立寄存器与段间的对应关系。例:例:CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKMOV AX,DATAMOV DS,AXCODE ENDS一般放在最后一个段定义语句中一般放在最后一个段
42、定义语句中 其中其中DOS的装入程序负责把的装入程序负责把CS和和SS初始化为正确的地址,因此用户初始化为正确的地址,因此用户在程序中不必设置。但是由于在程序中不必设置。但是由于DS寄存寄存器被用作其它用途,因此,用户必须器被用作其它用途,因此,用户必须用两条指令对用两条指令对DS进行初始化,以装入进行初始化,以装入用户的数据段地址,当使用附加段用户的数据段地址,当使用附加段ES时,也要赋给段地址。时,也要赋给段地址。4、定义过程的伪指令、定义过程的伪指令PROC和和ENDP过程:具有一定功能的程序段(相当于一个子程序)过程:具有一定功能的程序段(相当于一个子程序)格式:格式: 过程名过程名
43、PROC 类型类型 RET 过程名过程名 ENDP说明:说明:过程体内应至少有一条过程体内应至少有一条RET指令,以便返指令,以便返回被调用处。一个过程可以调用另一个过程,回被调用处。一个过程可以调用另一个过程,也可以调用过程本身。也可以调用过程本身。举例:举例:FARNEAR一个延时一个延时100ms 的子程序,过程定义为:的子程序,过程定义为:SOFTDLYPROCMOV BL,10DELAY:MOVCX,2801WAIT:LOOPWAITDECBLJNZDELAYRETSOFTOLYENDPPUSH BXPUSH CXPOP CX POP BX小循环小循环大循环大循环CODE2 SEGM
44、ENTASSUME CS:CODE2CALL FARPROCCALL NEARPROCNEARPROC PROC NEAR RETNEARPROCENDPCODE2ENDSCODE1 SEGMENT ASSUME CS:CODE1FARPROC PROC FAR RETFARPROC ENDPCODE1 ENDSCODE2 SEGMENT ASSUME CS:CODE2 CALL FARPROC CALL NEARPROCNEARPROC PROCNEAR RETNEARPROCENDPCODE2ENDS CODE1 SEGMENTASSUMECS:CODE1 FARPROCPROCFARRE
45、T FARPROCENDP CODE1 ENDS5、模块间通讯的伪指令、模块间通讯的伪指令PUBLIC和和EXTRN PUBLIC格式:格式: PUBLIC 名称名称,名称,名称,功能:功能: 用于将一个标号定义为公用的,以便供其他模用于将一个标号定义为公用的,以便供其他模块使用。块使用。说明:说明:名称可以是标号、变量名、过程名等。名称可以是标号、变量名、过程名等。 EXTRN格式:格式:EXTRN 名称:类型名称:类型,名称:类型,名称:类型.功能:功能:在本模块中引用了在外模块中用在本模块中引用了在外模块中用PUBLIC说明的说明的名称时,必须用名称时,必须用EXTRN说明。说明。说明:
46、说明:EXTRN和和PUBLIC是互相对应的。是互相对应的。6、汇编结束伪指令、汇编结束伪指令END格式:格式: END 表达式表达式功能:功能:表示源程序到此结束。表示源程序到此结束。说明:说明:一个源程序必须有且只能有一个一个源程序必须有且只能有一个END语句,一般放在程序最后一行。语句,一般放在程序最后一行。 表达式表达式 表示该汇编程序中第一条可表示该汇编程序中第一条可执行语句的标号,当有多个模块时,只执行语句的标号,当有多个模块时,只有主模块可以有有主模块可以有 表达式表达式 。SEGMENT ENDS 段定义段定义PROC ENDP 过程定义过程定义MACRO ENDM 宏定义宏定
47、义四、汇编语言的运算符四、汇编语言的运算符1、取值运算符、取值运算符SEG和和OFFSET功能:功能:分别给出一个变量或标号的段地址和偏移量。分别给出一个变量或标号的段地址和偏移量。举例:举例:SLOT DW 25 ;定义标号;定义标号 MOV AX,SLOT ; MOV AX,SEG SLOT ; MOV AX,OFFSET SLOT ;从从SLOT地址中取一个字送入地址中取一个字送入AX中中将将SLOT标号所在段的段地址送入标号所在段的段地址送入AX中。中。将将SLOT标号在段内的偏移地址送入标号在段内的偏移地址送入AX中中2、属性运算符、属性运算符 对指令中的操作数指定一个临时属性,而暂
48、对指令中的操作数指定一个临时属性,而暂忽略当前的属性。忽略当前的属性。 指针运算符指针运算符PTR功能:功能:忽略操作数当前的类型(字节或字)及属忽略操作数当前的类型(字节或字)及属性(性(NEAR或或FAR),而给出一个临时的类型),而给出一个临时的类型或属性。或属性。 SHORT运算符运算符功能:功能: 仅用于无条件转移指令,指出转移的标仅用于无条件转移指令,指出转移的标 号不仅是号不仅是NEAR型,并且是在下一条指令的型,并且是在下一条指令的 -128+127个字节范围内。个字节范围内。SLOT DW 25MOV AL,BYTE PTR SLOTJMPFARPTRSTEPMOV BX ,
49、5MOV BYTEPTR BX ,5MOV WORDPTR BX ,5H1:JMPH1JMPSHORT H2H2: MOV AX,0五、宏指令五、宏指令 宏宏:如同过程一样如同过程一样,也是执行某一任务的指也是执行某一任务的指令组令组,它们的区别是过程通过它们的区别是过程通过“CALL”指令访指令访问问,而宏及所有宏内定义的指令组而宏及所有宏内定义的指令组,被插入到程被插入到程序中使用它的部位。序中使用它的部位。 在汇编语言书写的源程序中,若有的程序在汇编语言书写的源程序中,若有的程序段要多次使用,为了简化程序书写,该程序段段要多次使用,为了简化程序书写,该程序段可以用一条宏指令来代替,而汇编
50、程序汇编到可以用一条宏指令来代替,而汇编程序汇编到该宏指令时,仍会产生原程序所需的机器码。该宏指令时,仍会产生原程序所需的机器码。宏定义格式:宏定义格式:宏指令名宏指令名 MACRO 形式参量形式参量1,形参,形参2, ENDM 宏指令名是一个宏调用的依据(必须要写,与标号规宏指令名是一个宏调用的依据(必须要写,与标号规定一致)定一致) 形式参量表形式参量表 可有可无,可以是一个,也可以有多个,可有可无,可以是一个,也可以有多个,在有多个时,各参量之间应用逗号分开。在有多个时,各参量之间应用逗号分开。 宏定义符宏定义符MACRO和宏定义结束符和宏定义结束符ENDM成对出现。成对出现。 宏体:宏
51、体:MACROENDM之间。之间。宏体宏体宏调用格式:宏调用格式:宏指令名宏指令名 实参实参1,实参,实参2, 宏调用中的实参应与宏定义中的形参一一对应,但宏调用中的实参应与宏定义中的形参一一对应,但在在IBM宏汇编中,数量上不一定一致,若实参多于形宏汇编中,数量上不一定一致,若实参多于形参,则多余部分被忽略,若实参少于形参,则多余的参,则多余部分被忽略,若实参少于形参,则多余的形参按空对待。形参按空对待。例:例:若对若对AL中的数据进行算术左移中的数据进行算术左移4位的操作,在某程位的操作,在某程序中被多次使用,可对该指令组进行宏定义。序中被多次使用,可对该指令组进行宏定义。SHIFTMAC
52、ROMOVCL,4SALAL,CLENDM宏体宏体MOV AL ,02HSHIFT例:例:宏定义宏定义 GADDMACROX,Y,ADDMOVAX,XADDAX,YMOVADD,AXENDM X,Y,ADD都是形参都是形参宏调用宏调用 GADDDATA1,DATA2,SUM DATA1,DATA2,DATA3,DATA4都是实参。都是实参。MOVAX,ADDAX,MOVDATA1DATA2SUM,AX例:用宏定义一个梯形面积公式。设上底为例:用宏定义一个梯形面积公式。设上底为x,下底为下底为y,高为高为hxyhMOVAL,XADDAL,YMULhSARAL, 1MOVAREA , ALTARE
53、A MACRO X,Y, h , AREA ENDM 现已知一梯形上底为现已知一梯形上底为8,下底为,下底为10,高为,高为5。求此梯形面积。求此梯形面积。TAREA 08H,0AH,05HMOV AL,08HADDAL,0AHMUL 05HSARAL,1,BX,34H 定义重复变量伪指令定义重复变量伪指令DUP格式:格式:例例 DATA1DB10 DUP (0) ;定义;定义DATA1为为10个个“0”组成的字节变量组成的字节变量DATA2DW2 DUP (?)(?) ;定义;定义DATA2为为2个不确定数值的字变量个不确定数值的字变量DATA3DB4 DUP (1,2 DUP(50H) ;
54、定义;定义DATA3为(为(1,50H,50H)重复)重复4次共次共12个字个字节的字节变量节的字节变量 DBDWDD变量名变量名n DUP (表达式)(表达式)六、汇编语言源程序的结构六、汇编语言源程序的结构 一般来说,一个完整的汇编源程序应由三个一般来说,一个完整的汇编源程序应由三个程序段组成,即代码段、数据段和堆栈段,每程序段组成,即代码段、数据段和堆栈段,每个段都以个段都以SEGMENT开始,以开始,以ENDS结束,代结束,代码段包含程序要执行的指令;堆栈段用来在内码段包含程序要执行的指令;堆栈段用来在内存中建立一个堆栈区;数据段用来在内存中建存中建立一个堆栈区;数据段用来在内存中建立
55、一个适当容量的工作区,以存放程序中所需立一个适当容量的工作区,以存放程序中所需的数据。的数据。注意:一个源程序中,代码段是必须的,而数据注意:一个源程序中,代码段是必须的,而数据段和堆栈段可以没有或有其中一个。段定义时段和堆栈段可以没有或有其中一个。段定义时一般最后定义代码段。一般最后定义代码段。STACK SEGMENTPARA STACK STACK DB500 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTMAIN PROCFAR ASSUMECS:CODE,DS:DATA, ES:DATA,SS:STACK PUSHDS MOVAX,
56、0 PUSHAX MOVAX,DATA MOVDS,AX MOVES,AX RETMAIN ENDPCODE ENDS ENDMAIN定义堆栈段定义堆栈段定义数据段定义数据段定义代码段定义代码段SEGMENTENDSSEGMENTENDSSEGMENTENDSMAIN PROCFARMAIN ENDPENDMAINSTACK SEGMENTPARA STACK STACK DB500 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTMAIN PROCFAR ASSUMECS:CODE,DS:DATA, ES:DATA,SS:STACK PUSH
57、DS MOVAX,0 PUSHAX MOVAX,DATA MOVDS,AX MOVES,AX RETMAIN ENDPCODE ENDS ENDMAIN1、必须用、必须用ASSUME伪指令伪指令告诉汇编程序,哪一个段和告诉汇编程序,哪一个段和哪一个段寄存器相对应,即哪一个段寄存器相对应,即某一个段地址应由哪个段寄某一个段地址应由哪个段寄存器提供段地址。存器提供段地址。ASSUMECS:CODE,DS:DATA, ES:DATA,SS:STACK2、对、对DS、ES 寄存器进行初寄存器进行初始化。始化。CS 和和 SS 由由DOS的装的装入程序自动分配正确的地址。入程序自动分配正确的地址。将段地
58、将段地址赋给址赋给相应的相应的段寄存段寄存器器3、程序在执行时由、程序在执行时由DOS的的装入程序将源程序装入内装入程序将源程序装入内存,并建立一个存,并建立一个256字节的字节的段前缀段前缀PSP,同时设定各段,同时设定各段寄存器的值。寄存器的值。一个源程序执行的过程一个源程序执行的过程第一步:编写汇编源程序第一步:编写汇编源程序 使用工具:使用工具:可使用各种文本编辑工具(记事本、可使用各种文本编辑工具(记事本、写字板、写字板、WORD等),我们使用等),我们使用DOS下的下的EDIT文本编辑器。文本编辑器。 功能:功能:产生一个存储源程序的文本文件。产生一个存储源程序的文本文件。 使用方
59、法:使用方法:在在DOS下运行下运行EDIT.EXE程序。程序。 1、 C:EDIT2、 输入汇编源程序并保存为输入汇编源程序并保存为.asm文件。文件。第二步:对源程序进行编译第二步:对源程序进行编译 使用工具:使用工具:使用使用MASM5.0编译器编译器 功能:功能:使用编译器对源程序文件进行编译,生成使用编译器对源程序文件进行编译,生成包含机器代码的目标文件包含机器代码的目标文件 ( .obj)。)。 使用方法:使用方法:在在DOS下运行下运行MASM.EXE程序。程序。 1、 C: MASM MASM.EXE2、输入要进行编译的源程序文件路径及名称。、输入要进行编译的源程序文件路径及名
60、称。3、输入进行编译后产生的目标文件保存的路径及、输入进行编译后产生的目标文件保存的路径及名称。名称。4、输入列表文件名:、输入列表文件名:5、输入交叉文件名:、输入交叉文件名:第三步:对目标文件进行连接第三步:对目标文件进行连接 使用工具:使用工具:使用使用 LINK . EXE连接器连接器 功能:功能:对目标文件进行连接,从而得到一个可执对目标文件进行连接,从而得到一个可执行文件行文件 . EXE 。 使用方法:使用方法:在在DOS下运行下运行LINK . EXE程序。程序。 1、 C: MASM LINK . EXE2、输入要进行连接的目标文件路径及名称。、输入要进行连接的目标文件路径及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年心理护理专项试题
- 2025年中国无线电射频系统行业市场深度分析及发展前景预测报告
- 2025年中国车用颗粒物传感器行业市场发展现状及投资规划建议报告
- 餐厅消防培训课件
- 仓储知识培训课件
- ttt培训课件 视频
- 2025年技术服务项目可行性研究报告
- 各项同性≤1.05的等静压石墨项目节能评估报告(节能专)
- 中国蓝山县房地产行业发展监测及投资战略咨询报告
- 2025年 中国烟草总公司黑龙江省公司招聘考试笔试试题附答案
- 2025年重庆市中考地理试题 (解析版)
- (2025)学习《中华人民共和国监察法》知识试题库(附含答案)
- JG/T 313-2014额定电压0.6/1kV及以下金属护套无机矿物绝缘电缆及终端
- 2025年保健按摩师资格技术及理论知识考试题库(附含答案)
- T/CSBME 050-2022宫颈液基细胞人工智能医疗器械质量要求和评价第1部分:数据集要求
- 2024年青海省囊谦县事业单位公开招聘辅警考试题带答案分析
- 肿瘤免疫治疗和靶向治疗的护理
- 打胎分手后协议书
- 2024年辽宁省沈阳市中考一模生物试卷(一)
- 《食管癌全程管理专家共识(2025版)》解读
- 孝廉文化课件
评论
0/150
提交评论