收藏 分享(赏)

8086指令系统简介.ppt

上传人:HR专家 文档编号:6530674 上传时间:2019-04-15 格式:PPT 页数:188 大小:4.21MB
下载 相关 举报
8086指令系统简介.ppt_第1页
第1页 / 共188页
8086指令系统简介.ppt_第2页
第2页 / 共188页
8086指令系统简介.ppt_第3页
第3页 / 共188页
8086指令系统简介.ppt_第4页
第4页 / 共188页
8086指令系统简介.ppt_第5页
第5页 / 共188页
点击查看更多>>
资源描述

1、8086指令系统简介,徐承彬,一、 8086的指令格式和寻址方式,汇编语言指令要解决的两个问题:要指出进行什么操作操作符; 要指出操作数和操作数地址及操作结果放在何处寻址方式。,操作码(OP),操作数(EA),(一)、指令格式,1、零地址指令格式2、一地址指令格式,操作码(OP),OP EA,操作码,操作数,3、二地址指令格式,OP EA1 EA2,操作码,第一操作数 (目的操作数),第二操作数 (源的操作数),二、8086的寻址方式,操 作 数 有 三 种 可 能 存 放 方 式,(二)、8086的寻址方式,操 作 数 有 三 种 可 能 存 放 方 式,操作数在指令中,操作数在CPU内部

2、某一寄存器中,操作数在内存的存储单元中,1、立即数寻址 操作数就在指令中提供,叫立即数寻址方式。 例:MOV AL,15H,立即寻址,该指令是把立即数15H送寄存器AL, 指令执行后(AL)=15H,例如: MOV AX,7632H,例如: MOV word ptr BX,20H,2、寄存器寻址 操作数在CPU内部的寄存器中,指令中指定寄存器号 例:MOV DI,AX,AX,DI,执行前(AX)=1234H,(DI)=0018H,1234H,0018H,1234H,执行后(AX)=1234H,(DI)=1234H,寄存器寻址,INC CX ;将CX的内容加1ROL AH,1 ;将AH中的内容循

3、环左移一位,CX,AH,3、存储器寻址:操作数或地址在存储器中,存 储 器 寻 址,直接寻址,间接寻址,相对寻址,基址变址寻址,相对基址变址寻址,(1)直接寻址 操作数的16位有效地址在指令中 物理地址=(DS)16+EA 例:MOV AX,205AH,M . . . . .,代码段,数据段,设(DS)=3000H,OP,5A,20,3 0 0 0,205A,物理地址=3205A,12,34,指令执行后(AX)=3412H,数据段首地址=30000,注:在汇编语言中有时用符号地址作为有效地址。 例如:MOV AX,ARRY 也可写成 MOV AX,ARRY 在8086中允许段超越,即允许数据放

4、在数据段以外的其他段中,指令中需加段跨越前缀。 例如:MOV AX,ES:2000H,符号地址,注:对于双操作数指令, 必须有一个操作数在寄存器中,(2)间接寻址:操作数的有效地址在寄存器BX,BP或变址寄存器SI,DI中,操 作 数 物 理 地 址,=,(DS)16+(BX),(DS)16+(SI),(DS)16+(DI),(SS)16+(BP),例如: MOV AX,BX,例如: MOV AL,BX,例如: MOV AX,SI,例如: MOV AL,DI,例如: MOV SI,BX,例如: MOV BP,AX,寄存器间接寻址,寄存器寻址,(3)相对寻址:操作数的有效地址由基址寄存器BX,B

5、P或变址寄存器SI,DI之一中的内容加上指令中指定的8位或16位位移量组成。,操 作 数 物 理 地 址,=,(DS)16+(BX)+ 8位或16位位移量,(DS)16+(SI) + 8位或16位位移量,(DS)16+(DI) + 8位或16位位移量,(SS)16+(BP) + 8位或16位位移量,例:MOV AX,COUNTSI,M . . . . .,代码段,数据段,设(DS)=3000H,(SI)=0110H,OP,10,00,3 0 0 0,0110+0010=0120,物理地址=30120H,12,34,指令执行后(AX)=3412H,数据段首地址=30000,例如: MOV AX,

6、20HBX,相对寻址,例如: MOV AX,BUFSI,(4)基址变址寻址:操作数的有效地址是指令中指定的基址寄存器(BX或BP)和变址寄存器(SI或DI)之和。,操 作 数 物 理 地 址,=,(DS)16+(BX)+ (SI),(DS)16+(BX)+ (DI),(SS)16+(BP)+ (SI),(SS)16+(BP)+ (DI),例如: MOV AX,BXSI,基址变址寻址,例如: MOV AL,BXDI,例如: MOV AX,BPSI,(5)相对基址变址寻址:操作数的有效地址是指令中指定的基址寄存器(BX或BP)和变址寄存器(SI或DI)与一个8位或16位位移量之和。,操 作 数 物

7、 理 地 址,=,(DS)16+(BX)+ (SI) +8位或16位位移量,(DS)16+(BX)+ (DI)+ 8位或16位位移量,(SS)16+(BP)+ (SI)+ 8位或16位位移量,(SS)16+(BP)+ (DI)+ 8位或16位位移量,例如: MOV AX,10HBXSI,相对基址变址寻址,例如: MOV AL,BUFBXDI,例如:MOV AX,MASKBXDI 设(DS)=2000H,(SS)=3000H (BX)=1100H,(DI)=0010H,(SI)=0030H MASK=0203H,(21313H)=1234H (31313H)=2356H,(21333H)=005

8、6H 则:,操作数的物理地址,=,2 1 3 1 3H,执行后(AX)=,1234H,指出下列指令中源操作数和目的操作数的寻址方式 1.MOV AX,100 2.MOV SI,AX 3.MOV CX,DATXSI 4.ADD AX,BXDI 5.AND AX,BX 6.MOV AX,TAXBXSI 7.SUB AX,2500H,二、 8086的指令系统,(一)、指令书写格式: 标号:助记符 目的操作数,源操作数;注释 (二)、8086的指令系统,数据传送指令,算术运算指令,逻辑操作指令,串操作指令,控制转移指令,处理机控制指令,1、数据传送:负责把数据、地址或立即数送到寄存器或存储单元中。,分

9、 类,通用传送指令,累加器专用传送指令,地址传送指令,标志传送指令,(1)通用传送指令 最基本的传送指令(MOV)格式:MOV OPRD1,OPRD2;B/WOPRD1:累加器、寄存器、存储器 OPRD2:累加器、寄存器、存储器操作数和立即数,目的操作数,源操作数,传送路径,段寄存器 DS、SS、ES,存储器,立即数,通用寄 存器 AX、BX CX、DX BP、SP SI、DI,MOV 指令的几种形式,MOV BX,AX MOV ALPHA,AX MOV ALPHA,AHMOV AH,ES:BXSI MOV AL,BP MOV AX,ARRAY,MOV ES,DX MOV DS,AX MOV

10、ES,SS:BX MOV BX,DX MOV BL,AX(错误指令) MOV MEM,DX MOV CH,8AH MOV DL,B MOV BX,12H,堆栈操作指令 堆栈是在存储器中开辟的一个栈区 。 工作方式:“后进先出”的方式进行 8086的堆栈是从高地址向低地址方向生长的堆栈操作:,入栈指令,PUSH,出栈指令,POP,在CALL指令、 RET指令、中断响应和返回中都有入栈和出栈的操作。,PUSH入栈指令,格式:PUSH SRC;W字操作,执行的操作,(SP-1)(SP-2) (SRC),SP (SP-2);先修改后操作,SRC是入栈的字操作数 寄存器、段寄存器(不包含CS)、和存储器

11、,例如:PUSH AX 设执行前(SP)=2500H,SS=5000H,(AX)=3125H,SS=5000H,堆栈段,SP=2500H,3 1 2 5,AX,3 1,SP=24FEH,2 5,栈顶单元物理地址=52500,例如:PUSH BETABXSI 设DS=2000H,BX=2100H,SI=2520H, BETA=03404H,SS=5000H,SP=2500H,操作数的物理地址 PA=20000+2100+2520+0340=24960,(524FE),(24960),(24961),(524FF),POP出栈指令,格式:POP DST;W字操作,执行的操作,(DST) (SP+1

12、,SP),SP (SP+2);先操作后修改,DST是出栈的字操作数的目的地址 (寄存器、段寄存器、和存储器),例如: PUSH AXPUSH BXPOP AX,执行前: AX=1234HBX=2345HSP=1000H,1000,SP,例如: PUSH AXPUSH BXPOP AX,执行前: AX=1234HBX=2345HSP=1000H,1000,0FFE,SP,34H,12H,执行后1: AX=1234HBX=2345HSP=0FFEH,例如: PUSH AXPUSH BXPOP AX,执行前: AX=1234HBX=2345HSP=1000H,1000,0FFE,34H,12H,执行

13、后2: AX=1234HBX=2345HSP=0FFCH,0FFC,SP,45H,23H,例如: PUSH AXPUSH BXPOP AX,执行前: AX=1234HBX=2345HSP=1000H,1000,0FFE,34H,12H,执行后3: AX=2345HBX=2345HSP=0FFCH,0FFC,45H,23H,SP,0FFE,例如: PUSH AXPUSH BXPOP AX,执行前: AX=1234HBX=2345HSP=1000H,1000,0FFE,34H,12H,执行后3: AX=2345HBX=2345HSP=0FFEH,0FFC,45H,23H,SP,0FFE,交换指令:

14、XCHG,格式:XCHG OPRD1,OPRD2;B/w,执行的操作:(OPRD1) (OPRD2),例如:XCHG AX,BX 执行前:AX=420AH , BX=7955H 执行后:AX=7955H ,BX=420AH例如:XCHG DX,BPSI,(2) 累加器专用传送指令IN 输入指令固定端口输入数据 格式:IN AL/AX,Port;Port为端口号 功能:从固定端口Port传送一个字节或 一个字数据到AL或AX寄存器,8086规定,从固定端口输入数据, 端口号的范围为:,00HFFH,可变端口输入数据 格式:IN AL/AX,DX; 功能:从DX寄存器所存放的端口地址中送 一个字节

15、或 一个字数据到AL或AX寄存器,8086规定:外设最多可以有65536个I/O 端口,端口号范围为0000HFFFFH。 其中低256个端口为固定端口,指令中 可以直接指定。当端口号256时必须先 把端口号放在DX中然后才使用IN指令, 他们称为可变端口,OUT 指令 输出指令 格式:OUT Port,AL/AXOUT DX,AL/AX 例如:IN AX,21HIN AL,DXOUT 25H,AXOUT DX,AX,(3)地址-目的传送指令: 把地址送到指定的寄存器中LEA指令:,有效地址送寄存器指令,格式,LEA REG,SRC,功能,把REG EASRC,注:SRC只能是各种寻址方式的存

16、储器操作数 REG 只能是16位的通用寄存器,例如:LEA CX,BXDI 执行前 (BX)=1000H ,(DI)=0250H,操作数的有效地址 EA=1000H+0250=1250H,执行后(CX),=,1250H,CX 的内容是存储单元的有效 地址而非存储单元的内容,例:LEA DX,BATEBX,执行前(BX)=1248H ,BETA=0020H,该指令执行后(DX)=1268H,2、算术运算指令:用来执行算术运算,(1)加法指令:ADD ADC INC,ADD:加法指令,格式:ADD OPRD1,OPRD2,操作: OPRD1 OPRD1+OPRD2,结果影响标志位 AF,CF,OF

17、,PF,SF,ZF,例如: ADD AX,SI,例如: ADD AL,BH,(1)加法指令:ADD ADC INC,ADC:带进位的加法指令,格式:ADC OPRD1,OPRD2,操作: OPRD1 OPRD1+OPRD2+CF,结果影响标志位 AF,CF,OF,PF,SF,ZF,例如:在存储区中有两个双字数据,分别存放在FIRST和SECOND单元中(四个字节)将两个数相加后结果放在THIRD单元中,7 8 5 6,2 3 9 1,1 0 3 3,1 A B 6,FIRST,3 3,1 0,5 6,7 8,SECOND,B 6,1 A,9 1,2 3,THIRD,相关程序如下:,MOV AX

18、,FIRST,3 3,1 0,5 6,7 8,B 6,1 A,9 1,2 3,E 9,2 A,FIRST,SECOND,ADD AX,SECOND,THIRD,MOV THIRD,AX,MOV AX,FIRST+2,ADC AX,SECOND+2,MOV THIRD+2,AX,(1)加法指令:ADD ADC INC,INC:加1指令,格式:INC OPRD,操作: OPRD OPRD+1,结果影响标志位 AF,OF,PF,SF,ZF,例:INC AL,例:INC CX,例:INC word PTR BXDI,(2)减法指令:SUB SBB DEC CMP,SUB:减法指令,格式:SUB OPR

19、D1,OPRD2,操作: OPRD1 OPRD1-OPRD2,结果影响标志位 AF,CF,OF,PF,SF,ZF,(2)减法指令:SUB SBB DEC CMP,SBB:带借位减法指令,格式:SBB OPRD1,OPRD2,操作: OPRD1 OPRD1-OPRD2-CF,结果影响标志位 AF,CF,OF,PF,SF,ZF,(2)减法指令:SUB SBB DEC CMP,DEC:减1指令,格式:SUB OPRD,操作: OPRD OPRD-1,结果影响标志位 AF,OF,PF,SF,ZF,(2)减法指令:SUB SBB DEC CMP,CMP:比较指令,格式:CMP OPRD1,OPRD2,操

20、作: OPRD1-OPRD2,结果影响标志位 AF,CF,OF,PF,SF,ZF,例如:CMP AX,BX,例如:CMP AL,20H,例如:CMP AL,SI,(3)乘法指令:MUL IMUL,MUL:无符号书乘法指令,格式:MUL SRC;B/W,操作:AX AL*(SRC),DX AX AX*(SRC),指令中隐含目的操作数为累加器(AL/AX),源操作数为寄存器操作数或存储器操作数,(3)乘法指令:MUL IMUL,IMUL:有符号数乘法指令,格式:IMUL SRC;B/W,操作:AX AL*(SRC),DX AX AX*(SRC),两条指令的执行结果是不同的,乘法指令对CF和OF有影

21、响对其他位无定义,(4) 除法指令:DIV IDIV,DIV:无符号数除法指令,格式:DIV SRC,操作:字节操作,16位被除数在AX中 8位除数为源操作数,结果的 8位商在AL中,8位余数在AH中,操作:字操作, 位被除数在 和 中, 位除数为源操作数,结果的16位商在AX中,16位余数 在DX中,DX,32,AX,16,(4) 除法指令:DIV IDIV,IDIV:有符号数除法指令,格式与操作同DIV 指令,注1:除法运算后,标志位不确定,注2:若除数位0,则产生0号中断,注3:除法中,若被除数为8位(字节除法 或16位(字除法)时必须将被除数进行 符号扩展,AL扩展到AH中,AX扩展到

22、 DX中,CBW:字节转换为字指令,格式:CBW,操作:AL中的符号位扩展到AH中,例如:,AL=64H,=0 1 1 0 0 1 0 0B,执行CBW后,AX=,00 64H,例如:,AL=83H,=1 0 0 0 0 0 1 1B,执行CBW后,AX=,FF 83H,CWD:字转换为双字指令,格式:CWD,操作:AX中的符号位扩展到DX中,CBW和CWD指令不影响标志位,例如:计算 V-(X*Y+Z)/X 其中X,Y,Z,V均为16位有符号数 分别已装入X,Y,Z,V字单元,要 求将上式结果的商存入AX中,余 数存入DX中,请编写相应程序,V-(X*Y+Z)/X,MOV AX,X,X,Y,

23、Z,V,IMUL Y,MOV CX,AX,MOV BX,DX,MOV AX,Z,CWD,ADD CX,AX,ADC BX,DX,MOV AX,V,CWD,SUB AX,CX,SBB DX,BX,;X*Y,IDIV X,3、逻辑运算指令和移位指令,(1)逻辑运算指令,AND OR XOR TEST NOT,AND:逻辑与指令,格式:,AND OPRD1,OPRD2;B/W,功能:,OPRD1 OPRD1 OPRD2,AND指令执行后,CF=0,OF=0. 对AF无定义,对 SF ,PF ,ZF 有影响,注:,0,A,=,0,1,A,=,A,例1:屏蔽一个字节的高4位,(AL)=39H,=,001

24、1 1001B,则屏蔽字:,0000,1111,则指令AND AL,0FH执行后,(AL)=,09H,例2:AND AL,AL,执行后AL寄存器的内容不变 但使CF=0,(1)逻辑运算指令,AND OR XOR TEST NOT,OR:逻辑或指令,格式:,OR OPRD1,OPRD2;B/W,功能:,OPRD1 OPRD1 OPRD2,OR指令执行后,CF=0,OF=0. 对AF无定义,对 SF ,PF ,ZF 有影响,注:,0,A,=,A,1,A,=,1,例1:将一个字节的高4位置1,(AL)=39H,=,0011 1001B,则屏蔽字:,1111,0000,则指令OR AL,F0H执行后,

25、(AL)=,F9H,例2:OR AL,80H,OR AL,AL,(1)逻辑运算指令,AND OR XOR TEST NOT,XOR:逻辑异或指令,格式:,XOR OPRD1,OPRD2;B/W,功能:,OPRD1 OPRD1 OPRD2,XOR指令执行后,CF=0,OF=0. 对AF无定义,对 SF ,PF ,ZF 有影响,注:,0,A,=,A,1,A,=,A,例1:将某个操作数清零,则执行指令,XOR AL,AL,则屏蔽字:,1001,1000,例2:将操作数的某些位取反,(AL)=38H=,0011 1000B,则执行指令,XOR AL,98H,(1)逻辑运算指令,AND OR XOR T

26、EST NOT,TEST:测试指令,格式:,TEST OPRD1,OPRD2;B/W,功能:,OPRD1 OPRD2,TEST指令执行后,CF=0,OF=0. 对AF无定义,对 SF ,PF ,ZF 有影响,作用:测试某一位或某几位的条件是否满足,例1:TEST AL,01H,JNZ THERE,THERE :,(AL)=1010 0011,0000 0001,例2:TEST AX,8000H,JNZ THERE,THERE :,(1)逻辑运算指令,AND OR XOR TEST NOT,NOT:逻辑非指令,格式:,NOT OPRD;B/W,功能:,OPRD OPRD,NOT指令不影响标志位,

27、例 NOT AL,3、逻辑运算指令和移位指令,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,SHL:逻辑左移指令,格式:,SHL OPRD,CNT;B/W,功能:,移位次数由CNT决定 可以是1或CL寄存器的值,D0,D7,0,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,SHR:逻辑右移指令,格式:,SHR OPRD,CNT;B/W,功能:,D0,D7,0,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,SAL:算术左移指令,格式:,SAL OPRD,CNT;B/W,功

28、能:,D0,D7,0,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,SAR:算术右移指令,格式:,SHR OPRD,CNT;B/W,功能:,D0,D7,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,ROL:循环左移指令,格式:,ROL OPRD,CNT;B/W,功能:,D0,D7,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,ROR:循环右移指令,格式:,ROR OPRD,CNT;B/W,功能:,D0,D7,CF,(2)逻辑移位指令,SHL SHR SAL SAR

29、 ROL ROR RCL RCR,RCL:带进位循环左移指令,格式:,RCL OPRD,CNT;B/W,功能:,D0,D7,CF,(2)逻辑移位指令,SHL SHR SAL SAR ROL ROR RCL RCR,RCR:带进位循环右移指令,格式:,RCR OPRD,CNT;B/W,功能:,D0,D7,CF,MOV CL,3,SAR 20HBX,CL,执行前(DS)=2000H (BX)=1200H,(21220)=38H =0011 1000B,执行后(21220)=,0000 0111B,=,07H,例2:,SAL AH,1,执行前(AH)=A5H,1 0 1 0 0 1 0 1,CF,执

30、行后(AH)=,4AH,CF=,1,0F=,1,ZF=,0,SF=,0,PF=,0,4、串操作指令,5、控制转移指令,(1)无条件转移指令JPM,段内转移,段间转移,IP,CS IP,Data segment Addr dw number Number dw y Count dw ? Data ends Code segment Assume cs:code,ds:data Start:mov ax,dataMov ds,axMov cx,0Mov bx,addrMov ax,bx Repeat:test ax,0ffffh Jz exitJns shift,Inc cx Shift: shl

31、 ax,1 Jmp repeat Exit: mov count,cxMov ah,4ch Int 21hCode ends End start,(2)条件转移指令,条件判断,Y,转向目标指令,N,顺序执行指令,根据单个标志位的条件进行转移,JZ OPR,;ZF=1 转移,JNZ OPR,;ZF=0 转移,JS OPR,;SF=1 转移,JNS OPR,;SF=0 转移,JO OPR,;OF=1 转移,JNO OPR,JP OPR,JNP OPR,;OF=0转移,;PF=1转移,;PF=0转移,例如:,CMP AX,DX,JZ NEXT,比较两个无符号数根据比较结果转移,JB(JNAE,JC)

32、 OPR,JNB(JAE,JNC) OPR,A和B,JBE(JNA,) OPR,JNBE(JA,) OPR,例如:当一个无符号数x小于、等于、或大于100时的三种情况下,应去执行三个不同的程序段,MOV AL,X,CMP AL,100,JA PROG3,PROG1:,X100程序段,PROG2:,X=100程序段,PROG3:,X100程序段,JZ PROG2,比较两个有符号数根据比较结果转移,JL(JNGE) OPR,JNL(JGE) OPR,JLE(JNG) OPR,JNLE(JG) OPR,测试CX的值为0则转移指令 JCXZ,格式:,JCXZ OPR,(3)循环指令,LOOP 循环指令

33、,格式:,LOOP OPR,测试条件:CX0,LOOPZ/LOOPE 为零或相等时循环指令,格式:,LOOPZ/LOOPE OPR,测试条件:ZF=1且CX0,LOOPNZ/LOOPNE 不为零或不相等时循环指令,格式:,LOOPNZ/LOOPNE OPR,测试条件:ZF=0且CX0,例如:有一个首地址为ARRAY的M个字数组 试编写一个程序,求出该数组的内容之和(不考虑溢出)并把结果存入TOTAL中,存储器数据段,ARRAY,M个,TOTAL,MOV CX,M,MOV AX,0,MOV SI,0,START LOOP:,ADD AX,ARRAYSI,ADD SI,2,LOOP START L

34、OOP,MOV TOTAL,AX,5、处理器控制指令,CLC,CMC,STC,CLD,STD,CLI,STI,HLT,3.3汇编语言程序设计,一、8086汇编语言源程序的格式 1、一般格式 Name1 segment语句 Name1 ends Name2 segment语句 Name2 ends,Name3 segment 语句 Name3 endsend 标号2、指令的种类,指令语句,指示性语句,MOV ,ADD ,LMP,MY PLACE DB ?,二、语句的格式,名字项,操作项,操作数项,;注释项,1、名字项,标号,变量,某条指令所在存储单元的符号地址,某操作数所在存储单元的符号地址,(

35、1)标号,在代码段定义,后面跟“:”,(2)变量,在代码段以外的段定义,后不跟“:”,2、操作项,指令、伪指令、或宏指令助记符,3、操作数项,由一个或多个项组成,多个操作数 之间用“,”分开,(1)对于指令语句,一般为操作数地址、变量、寄存器、 标号、变量或表达式,(2)对于伪指令语句或宏指令语句,一般为所要的参数,DEBUG.EXE 调试程序,一、程序的编制和运行 1、用编辑程序EDIT建立以.ASM为扩展名的源程序文件。 2、用汇编程序MASM对源文件进行汇编,生成以. OBJ为扩展名的目标文件 3、用LINK(连接程序)对目标文件进行连接,形成以.EXE为扩展名的可执行文件。,二、DEB

36、UG.EXE 调试程序的使用 1、进入DEBUG,在根目录下键入DEBUG,例如:,C,DEBUG,或者,C,DEBUG,Filename.EXE,DEBUG 调入后出现提示符,2、DEBUG 的常用命令,(1)显示内存单元内容命令,D,格式:,- D 地址 或 -D 范围,(2)修改内存单元内容命令,E,格式1:,- E 地址 内容表,例如:,- E DS:120 00 11ABC22,格式2:,- E 地址,逐个单元相继修改,例如:,- E 100,2、DEBUG 的常用命令,(1)显示内存单元内容命令,D,格式:,- D 地址 或 -D 范围,(2)修改内存单元内容命令,E,格式1:,-

37、 E 地址 内容表,例如:,- E DS:120 00 11ABC22,格式2:,- E 地址,逐个单元相继修改,例如:,- E 100,2、DEBUG 的常用命令,(1)显示内存单元内容命令,D,格式:,- D 地址 或 -D 范围,(2)修改内存单元内容命令,E,格式1:,- E 地址 内容表,例如:,- E DS:120 00 11ABC22,格式2:,- E 地址,逐个单元相继修改,例如:,- E 100,(3)检查和修改寄存器命令,R,格式1:,-R,显示CPU内所有寄存器 内容和标志位,格式2:,-R 寄存器名,显示和修改某个寄存器内容,格式3:,-RF,显示和修改标志位状态,8个

38、标志位的置位复位名称,标志位,置位,复位,溢出 OF OV NV,方向 DF DN UP,符号 SF NG PL,零 ZF ZR NZ,辅助进位 AF AC NA,奇偶 PF PE PO,进位 CF CY NC,中断 IF EI DI,(3)检查和修改寄存器命令,R,格式1:,-R,显示CPU内所有寄存器 内容和标志位,格式2:,-R 寄存器名,显示和修改某个寄存器内容,格式3:,-RF,显示和修改标志位状态,(3)检查和修改寄存器命令,R,格式1:,-R,显示CPU内所有寄存器 内容和标志位,格式2:,-R 寄存器名,显示和修改某个寄存器内容,格式3:,-RF,显示和修改标志位状态,(4)运

39、行命令,G,格式:,-G =地址1 地址2地址3,(5)跟踪命令,T,格式1:,-T =地址,逐条指令跟踪,格式2:,-T =地址 值,(6)汇编命令,A,格式:,-A 地址,(4)运行命令,G,格式:,-G =地址1 地址2地址3,(5)跟踪命令,T,格式1:,-T =地址,逐条指令跟踪,格式2:,-T =地址 值,(6)汇编命令,A,格式:,-A 地址,(4)运行命令,G,格式:,-G =地址1 地址2地址3,(5)跟踪命令,T,格式1:,-T =地址,逐条指令跟踪,格式2:,-T =地址 值,(6)汇编命令,A,格式:,-A 地址,(4)运行命令,G,格式:,-G =地址1 地址2地址3

40、,(5)跟踪命令,T,格式1:,-T =地址,逐条指令跟踪,格式2:,-T =地址 值,(6)汇编命令,A,格式:,-A 地址,注:若输入的语句有语法错误, 则DEBUG显示 ERROR 且重新显示现行的汇编地址等 待新的输入,(7)反汇编命令,U,格式:,-U 范围,(8)退出命令,Q,格式:,-Q,退出DEBUG 返回DOS,三、指示性语句,伪指令语句不形成指令的机器码,仅告 诉汇编程序为指令中的操作数如何存放, 指令如何产生机器码,伪指令语句前如有标号,其后无冒号“:” 如有操作数,可以有两个以上的操作数。,伪指令在程序中起着定义、赋置说明、 分段等作用。,1、数据定义伪指令,格式:,变

41、两名 助记符 操作数 ;注释,DB:,定义字节,其后的每个操作数占用一个字节,DW:,定义字,其后的每个操作数占用一个字,DD:,定义双字,其后的每个操作数占用两个字,DQ:,定义4个字,其后的每个操作数占用4个字,Dt:,定义10个字节,其后的每个操作数占 用10个字节,归纳为以下几种情况,(1)操作数可以是常量或 常量表达式,例如:,X DB 25,42,14H,0,-30,Y DW 123H,610,3A60H,Z DD 3705H,15,X,1 9,2 A,1 4,0 0,E 2,Y,2 3,0 1,3 C,0 0,6 0,3 A,0 5,Z,3 7,0 0,0 0,(2)伪指令后可用

42、操作数“?” 分配并保留空间,不存数据,例如:,A DB 5,?,DB ?,?,10,B DW ?,15,?,A,05,-,-,-,0A,B,-,-,0F,00,-,-,(3)可以用操作符DUP来复制 一些操作数,格式:,EXPCOUNT DUP(操作数.操作数),例如:,Y1 DB 2 DUP (11,?,15),Y2 DW 3 DUP (2500H,?),Y1 DB 2 DUP (11,?,15),Y2 DW 3 DUP (2500H,?),Y1,0B,-,0F,0B,-,0F,Y2,00,25,-,-,00,25,-,例如:,PARA DB 2DUP(3,2DUP(5,7),0),?,0

43、3,05,PARA,07,05,07,00,03,05,07,05,07,00,-,复制操作数DUP可以嵌套,(4)可以定义一个表 或一个字符串,例如: 110的平方值表可以定义如下 :,PFB DB 1,4,9,16,25,36,49,64,81,定义字符串,STRINGS DB “GOOD MORNING”,2、符号定义语句,格式:,符号名 EQU 表达式,伪指令可以把符号名定义为常量,或一个 能求出常数值得表达式,例如:,RT1 EQU 123,FS EQU 32,B5 EQU RT1+1,3、段定义伪指令 (1)段定义伪指令SEGMENT/ENDS,格式:,段名 segment 定位类

44、型 组合类型 类别,段名 ends,功能:,定义一个逻辑段,由若干逻辑 段组成源程序,定位类型,说明段的开始地点的特点,PARA,WORD,BYTE,PAGE,组合类型,告诉连接程序本段与其他段的关系,PUBLIC,STACK,COMMON,(2)段寄存器说明伪指令,格式:,ASSUME 段寄存器名:段名段寄存器名:段名,功能:,说明段寄存器与段的关系,在一般程序中,本伪指令通常位于代 码段的前面,指明程序中各段所用到 的段寄存器的情况,Code segment,Assume,cs:code,,ds:date,,ss:stack,,es:date1,,Mov ax, date,Mov ds,

45、ax,Mov ax, date1,Mov es, ax,Code ends,返回 dos,通常在代码段结束之前插入两条语句,MOV AH,4CH,INT 21H,四、程序设计举例,1、直线运行程序 例如:求两个数的平均值。两个数分别放在X和Y单元中,结果放在Z单元中。设两个数 分别为32和64 编程如下:,DATE segment,X DB 20H,Y DB 40H,X,20,Y,40,Z DB ?,DATE ENDS,CODE segment,ASSUME CS:CODE,DS:DATE,START:MOV AX,DATE,MOV DS,AX,MOV AL,X,MOV AL,X,ADD AL,Y,MOV AH,00H,ADC AH,00H,MOV BL,02H,DIV BL,MOV Z,AL,CODE ENDS,END START,2、分支程序设计,分支程序:,根据某种判断结果,从两个 以上的程序中选择一个执行。,条件,分支段1,分支段2,或,条件,分支段2,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报