指令系统简介.pptx

上传人:莉*** 文档编号:87269416 上传时间:2023-04-16 格式:PPTX 页数:187 大小:2.52MB
返回 下载 相关 举报
指令系统简介.pptx_第1页
第1页 / 共187页
指令系统简介.pptx_第2页
第2页 / 共187页
点击查看更多>>
资源描述

《指令系统简介.pptx》由会员分享,可在线阅读,更多相关《指令系统简介.pptx(187页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 一、8086的指令格式和寻址方式汇编语言指令要解决的两个问题:要指出进行什么操作操作符;要指出操作数和操作数地址及操作结果放在何处寻址方式。操作码(OP)操作数(EA)第1页/共187页(一)、指令格式1、零地址指令格式2、一地址指令格式操作码(OP)OP EA操作码操作数第2页/共187页3、二地址指令格式OP EA1 EA2操作码第一操作数(目的操作数)第二操作数(源的操作数)第3页/共187页二、8086的寻址方式操作数有三种可能存放方式第4页/共187页(二)、8086的寻址方式操作数有三种可能存放方式操作数在指令中操作数在CPU内部某一寄存器中操作数在内存的存储单元中第5页/共18

2、7页1、立即数寻址操作数就在指令中提供,叫立即数寻址方式。例:MOV AL,15H立即寻址该指令是把立即数15H送寄存器AL,指令执行后(AL)=15H 例如:MOV AX,7632H 例如:MOV word ptr BX,20H第6页/共187页2、寄存器寻址 操作数在CPU内部的寄存器中,指令中指定寄存器号例:MOV DI,AXAXDI执行前(AX)=1234H,(DI)=0018H1234H0018H1234H执行后(AX)=1234H,(DI)=1234H寄存器寻址第7页/共187页INCCX;将CX的内容加1ROLAH,1;将AH中的内容循环左移一位CXAH第8页/共187页3、存储

3、器寻址:操作数或地址在存储器中存储器寻址直接寻址间接寻址相对寻址基址变址寻址相对基址变址寻址第9页/共187页(1)直接寻址操作数的16位有效地址在指令中物理地址=(DS)16+EA例:MOV AX,205AHM.代码段数据段设(DS)=3000HOP5A203 0 0 0205A物理地址=3205A1234指令执行后(AX)=3412H数据段首地址=30000第10页/共187页注:在汇编语言中有时用符号地址作为有效地址。例如:MOV AX,ARRY也可写成 MOV AX,ARRY在8086中允许段超越,即允许数据放在数据段以外的其他段中,指令中需加段跨越前缀。例如:MOV AX,ES:20

4、00H符号地址注:对于双操作数指令,必须有一个操作数在寄存器中第11页/共187页(2)间接寻址:操作数的有效地址在寄存器BX,BP或变址寄存器SI,DI中操作数物理地址=(DS)16+(BX)(DS)16+(SI)(DS)16+(DI)(SS)16+(BP)第12页/共187页 例如:MOV AX,BX 例如:MOV AL,BX 例如:MOV AX,SI 例如:MOV AL,DI 例如:MOV SI,BX 例如:MOV BP,AX寄存器间接寻址寄存器寻址第13页/共187页(3)相对寻址:操作数的有效地址由基址寄存器BX,BP或变址寄存器SI,DI之一中的内容加上指令中指定的8位或16位位移

5、量组成。操作数物理地址=(DS)16+(BX)+8位或16位位移量(DS)16+(SI)+8位或16位位移量(DS)16+(DI)+8位或16位位移量(SS)16+(BP)+8位或16位位移量第14页/共187页例:MOV AX,COUNTSIM.代码段数据段设(DS)=3000H,(SI)=0110HOP10003 0 0 00110+0010=0120物理地址=30120H1234指令执行后(AX)=3412H数据段首地址=30000第15页/共187页 例如:MOV AX,20HBX相对寻址 例如:MOV AX,BUFSI第16页/共187页(4)基址变址寻址:操作数的有效地址是指令中指

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

7、(SS)16+(BP)+(SI)+8位或16位位移量(SS)16+(BP)+(DI)+8位或16位位移量第19页/共187页 例如:MOV AX,10HBXSI相对基址变址寻址 例如:MOV AL,BUFBXDI第20页/共187页例如:MOV AX,MASKBXDI设(DS)=2000H,(SS)=3000H(BX)=1100H,(DI)=0010H,(SI)=0030HMASK=0203H,(21313H)=1234H(31313H)=2356H,(21333H)=0056H则:操作数的物理地址=2 1 3 1 3H执行后(AX)=1234H第21页/共187页指出下列指令中源操作数和目的

8、操作数的寻址方式1.MOV AX,1002.MOV SI,AX3.MOV CX,DATXSI4.ADD AX,BXDI5.AND AX,BX6.MOV AX,TAXBXSI7.SUB AX,2500H第22页/共187页二、二、8086的指令系的指令系统(一)、指令书写格式:标号:助记符 目的操作数,源操作数;注释(二)、8086的指令系统数据传送指令算术运算指令 逻辑操作指令串操作指令控制转移指令处理机控制指令第23页/共187页1、数据传送:负责把数据、地址或立即数送到寄存器或存储单元中。分类通用传送指令累加器专用传送指令地址传送指令标志传送指令第24页/共187页(1)通用传送指令最基本

9、的传送指令(MOV)格式:MOV OPRD1,OPRD2;B/WOPRD1:累加器、寄存器、存储器OPRD2:累加器、寄存器、存储器操作数和立即数目的操作数源操作数第25页/共187页传送路径段寄存器DS、SS、ES存储器立即数通用寄存器AX、BXCX、DXBP、SPSI、DI第26页/共187页MOV 指令的几种形式MOV BX,AXMOV ALPHA,AXMOV ALPHA,AHMOV AH,ES:BXSIMOV AL,BPMOV AX,ARRAY第27页/共187页MOV ES,DXMOV DS,AXMOV ES,SS:BXMOV BX,DXMOV BL,AX(错误指令)MOV MEM,

10、DXMOV CH,8AHMOV DL,B MOV BX,12H 第28页/共187页堆栈操作指令堆栈是在存储器中开辟的一个栈区。工作方式:“后进先出”的方式进行8086的堆栈是从高地址向低地址方向生长的 堆栈操作:入栈指令PUSH出栈指令POP第29页/共187页在CALL指令、RET指令、中断响应和返回中都有入栈和出栈的操作。PUSH入栈指令格式:PUSH SRC;W字操作执行的操作(SP-1)(SP-2)(SRC)SP (SP-2);先修改后操作SRC是入栈的字操作数寄存器、段寄存器(不包含CS)、和存储器第30页/共187页例如:PUSH AX 设执行前(SP)=2500H,SS=500

11、0H,(AX)=3125HSS=5000H堆栈段SP=2500H3 1 2 5AX3 1SP=24FEH2 5栈顶单元物理地址=52500第31页/共187页例如:PUSH BETABXSI设DS=2000H,BX=2100H,SI=2520H,BETA=03404H,SS=5000H,SP=2500H操作数的物理地址PA=20000+2100+2520+0340=24960(524FE)(24960)(24961)(524FF)第32页/共187页POP出栈指令格式:POP DST;W字操作执行的操作(DST)(SP+1,SP)SP (SP+2);先操作后修改DST是出栈的字操作数的目的地址

12、(寄存器、段寄存器、和存储器)第33页/共187页 例如:PUSH AX PUSH BX POP AX执行前:AX=1234H BX=2345H SP=1000H1000SP第34页/共187页 例如:PUSH AX PUSH BX POP AX执行前:AX=1234H BX=2345H SP=1000H10000FFESP34H12H执行后1:AX=1234H BX=2345H SP=0FFEH第35页/共187页 例如:PUSH AX PUSH BX POP AX执行前:AX=1234H BX=2345H SP=1000H10000FFE34H12H执行后2:AX=1234H BX=234

13、5H SP=0FFCH0FFCSP45H23H第36页/共187页 例如:PUSH AX PUSH BX POP AX执行前:AX=1234H BX=2345H SP=1000H10000FFE34H12H执行后3:AX=2345H BX=2345H SP=0FFCH0FFC45H23HSP0FFE第37页/共187页 例如:PUSH AX PUSH BX POP AX执行前:AX=1234H BX=2345H SP=1000H10000FFE34H12H执行后3:AX=2345H BX=2345H SP=0FFEH0FFC45H23HSP0FFE第38页/共187页交换指令:XCHG格式:X

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

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

16、:SRC只能是各种寻址方式 的存储器操作数 REG 只能是16位的通用寄存器 第44页/共187页例如:LEA CX,BXDI执行前(BX)=1000H,(DI)=0250H操作数的有效地址EA=1000H+0250=1250H执行后(CX)=1250HCX 的内容是存储单元的有效地址而非存储单元的内容例:LEA DX,BATEBX执行前(BX)=1248H,BETA=0020H该指令执行后(DX)=1268H第45页/共187页2、算术运算指令:用来执行算术运算第46页/共187页(1)加法指令:ADD ADC INC ADD:加法指令格式:ADD OPRD1,OPRD2操作:OPRD1 O

17、PRD1+OPRD2结果影响标志位 AF,CF,OF,PF,SF,ZF 例如:ADD AX,SI 例如:ADD AL,BH第47页/共187页(1)加法指令:ADD ADC INC ADC:带进位的加法指令格式:ADC OPRD1,OPRD2操作:OPRD1 OPRD1+OPRD2+CF结果影响标志位 AF,CF,OF,PF,SF,ZF第48页/共187页例如:在存储区中有两个双字数据,分别存放在FIRST和SECOND单元中(四个字节)将两个数相加后结果放在THIRD单元中7 8 5 62 3 9 11 0 3 31 A B 6FIRST3 31 05 67 8SECONDB 61 A9 1

18、2 3THIRD第49页/共187页相关程序如下:MOV AX,FIRST3 31 05 67 8B 61 A9 12 3 E 9 2 AFIRSTSECONDADD AX,SECONDTHIRDMOV THIRD,AXMOV AX,FIRST+2ADC AX,SECOND+2MOV THIRD+2,AX第50页/共187页(1)加法指令:ADD ADC INC INC:加1指令格式:INC OPRD操作:OPRD OPRD+1结果影响标志位 AF,OF,PF,SF,ZF例:INC AL例:INC CX例:INC word PTR BXDI第51页/共187页(2)减法指令:SUB SBB D

19、EC CMPSUB:减法指令格式:SUB OPRD1,OPRD2操作:OPRD1 OPRD1-OPRD2结果影响标志位 AF,CF,OF,PF,SF,ZF第52页/共187页(2)减法指令:SUB SBB DEC CMPSBB:带借位减法指令格式:SBB OPRD1,OPRD2操作:OPRD1 OPRD1-OPRD2-CF结果影响标志位 AF,CF,OF,PF,SF,ZF第53页/共187页(2)减法指令:SUB SBB DEC CMPDEC:减1指令格式:SUB OPRD操作:OPRD OPRD-1结果影响标志位 AF,OF,PF,SF,ZF第54页/共187页(2)减法指令:SUB SBB

20、 DEC CMPCMP:比较指令格式:CMP OPRD1,OPRD2操作:OPRD1-OPRD2结果影响标志位 AF,CF,OF,PF,SF,ZF第55页/共187页例如:CMP AX,BX例如:CMP AL,20H例如:CMP AL,SI第56页/共187页(3)乘法指令:MUL IMULMUL:无符号书乘法指令格式:MUL SRC;B/W操作:AX AL*(SRC)DX AX AX*(SRC)指令中隐含目的操作数为累加器(AL/AX)源操作数为寄存器操作数或存储器操作数第57页/共187页(3)乘法指令:MUL IMULIMUL:有符号数乘法指令格式:IMUL SRC;B/W操作:AX A

21、L*(SRC)DX AX AX*(SRC)两条指令的执行结果是不同的乘法指令对CF和OF有影响对其他位无定义第58页/共187页(4)除法指令:DIV IDIVDIV:无符号数除法指令格式:DIV SRC操作:字节操作,16位被除数在AX中8位除数为源操作数,结果的8位商在AL中,8位余数在AH中操作:字操作,位被除数在 和 中,位除数为源操作数,结果的16位商在AX中,16位余数在DX中DX 32AX 16 第59页/共187页(4)除法指令:DIV IDIVIDIV:有符号数除法指令格式与操作同DIV 指令注1:除法运算后,标志位不确定 注2:若除数位0,则产生0号中断 注3:除法中,若被

22、除数为8位(字节除法或16位(字除法)时必须将被除数进行符号扩展,AL扩展到AH中,AX扩展到DX中第60页/共187页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第61页/共187页CWD:字转换为双字指令格式:CWD操作:AX中的符号位扩展到DX中CBW和CWD指令不影响标志位例如:计算 V-(X*Y+Z)/X其中X,Y,Z,V均为16位有符号数分别已装入X,Y,Z,V字单元,要求将上式结果的商存入A

23、X中,余数存入DX中,请编写相应程序第62页/共187页V-(X*Y+Z)/XMOV AX,XXYZVIMUL Y MOV CX,AXMOV BX,DXMOV AX,ZCWD ADD CX,AXADC BX,DXMOV AX,VCWD SUB AX,CXSBB DX,BX;X*Y IDIV X第63页/共187页3、逻辑运算指令和移位指令(1)逻辑运算指令AND OR XOR TEST NOT AND:逻辑与指令格式:AND OPRD1,OPRD2;B/W 功能:OPRD1 OPRD1 OPRD2AND指令执行后,CF=0,OF=0.对AF无定义对 SF ,PF ,ZF 有影响第64页/共18

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

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

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

27、令格式:NOT OPRD;B/W 功能:OPRD OPRDNOT指令不影响标志位例 NOT AL第72页/共187页3、逻辑运算指令和移位指令(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR SHL:逻辑左移指令格式:SHL OPRD,CNT;B/W 功能:移位次数由CNT决定 可以是1或CL寄存器的值D0D70CF第73页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR SHR:逻辑右移指令格式:SHR OPRD,CNT;B/W 功能:D0D70CF第74页/共187页(2)逻辑移位指令SHL SHR SAL SAR

28、 ROL ROR RCL RCR SAL:算术左移指令格式:SAL OPRD,CNT;B/W 功能:D0D70CF第75页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR SAR:算术右移指令格式:SHR OPRD,CNT;B/W 功能:D0D7CF第76页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR ROL:循环左移指令格式:ROL OPRD,CNT;B/W 功能:D0D7CF第77页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR ROR:循环右移指令格式

29、:ROR OPRD,CNT;B/W 功能:D0D7CF第78页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR RCL:带进位循环左移指令格式:RCL OPRD,CNT;B/W 功能:D0D7CF第79页/共187页(2)逻辑移位指令SHL SHR SAL SAR ROL ROR RCL RCR RCR:带进位循环右移指令格式:RCR OPRD,CNT;B/W 功能:D0D7CF第80页/共187页MOV CL,3SAR 20HBX,CL执行前(DS)=2000H (BX)=1200H (21220)=38H=0011 1000B 执行后(21220

30、)=0000 0111B=07H第81页/共187页例2:SAL AH,1执行前(AH)=A5H 1 0 1 0 0 1 0 1CF执行后(AH)=4AHCF=10F=1 ZF=0SF=0PF=0第82页/共187页 4、串操作指令第83页/共187页 5、控制转移指令(1)无条件转移指令JPM段内转移段间转移IPCS IP第84页/共187页Data segmentAddr dw numberNumber dw yCount dw?Data endsCode segmentAssume cs:code,ds:dataStart:mov ax,data Mov ds,ax Mov cx,0 M

31、ov bx,addr Mov ax,bxRepeat:test ax,0ffffh Jz exit Jns shiftInc cxShift:shl ax,1 Jmp repeatExit:mov count,cx Mov ah,4chInt 21h Code ends End start 第85页/共187页(2)条件转移指令条件判断Y转向目标指令N顺序执行指令第86页/共187页根据单个标志位的条件进行转移JZ OPR;ZF=1 转移JNZ OPR;ZF=0 转移JS OPR;SF=1 转移JNS OPR;SF=0 转移JO OPR;OF=1 转移JNO OPRJP OPRJNP OPR;

32、OF=0转移;PF=1转移;PF=0转移例如:CMP AX,DXJZ NEXT 第87页/共187页比较两个无符号数根据比较结果转移JB(JNAE,JC)OPRJNB(JAE,JNC)OPRA和BJBE(JNA,)OPRJNBE(JA,)OPR第88页/共187页例如:当一个无符号数x小于、等于、或大于100时的三种情况下,应去执行三个不同的程序段MOV AL,XCMP AL,100JA PROG3PROG1:X100程序段 JZ PROG2第89页/共187页比较两个有符号数根据比较结果转移JL(JNGE)OPRJNL(JGE)OPRJLE(JNG)OPRJNLE(JG)OPR测试CX的值为

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

34、ADD AX,ARRAYSIADD SI,2LOOP START LOOPMOV TOTAL,AX第92页/共187页5、处理器控制指令CLCCMCSTCCLDSTDCLISTIHLT第93页/共187页汇编语言程序言程序设计一、8086汇编语言源程序的格式1、一般格式Name1 segment 语句Name1 endsName2 segment 语句Name2 ends第94页/共187页Name3 segment 语句Name3 ends end 标号2、指令的种类 指令语句指示性语句MOV ,ADD ,LMPMY PLACE DB?第95页/共187页二、语句的格式名字项操作项操作数项;

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

36、、用LINK(连接程序)对目标文件进行连接,形成以.EXE为扩展名的可执行文件。第98页/共187页二、DEBUG.EXE 调试程序的使用1、进入DEBUG 在根目录下键入DEBUG例如:CDEBUG或者C DEBUGDEBUG 调入后出现提示符第99页/共187页2、DEBUG 的常用命令(1)显示内存单元内容命令D格式:-D 地址 或 -D 范围(2)修改内存单元内容命令E格式1:-E 地址 内容表例如:-E DS:120 00 11ABC22格式2:-E 地址 逐个单元相继修改例如:-E 100第100页/共187页第101页/共187页第102页/共187页2、DEBUG 的常用命令(

37、1)显示内存单元内容命令D格式:-D 地址 或 -D 范围(2)修改内存单元内容命令E格式1:-E 地址 内容表例如:-E DS:120 00 11ABC22格式2:-E 地址 逐个单元相继修改例如:-E 100第103页/共187页第104页/共187页2、DEBUG 的常用命令(1)显示内存单元内容命令D格式:-D 地址 或 -D 范围(2)修改内存单元内容命令E格式1:-E 地址 内容表例如:-E DS:120 00 11ABC22格式2:-E 地址 逐个单元相继修改例如:-E 100第105页/共187页第106页/共187页(3)检查和修改寄存器命令R格式1:-R显示CPU内所有寄存

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

39、)检查和修改寄存器命令R格式1:-R显示CPU内所有寄存器内容和标志位格式2:-R 寄存器名显示和修改某个寄存器内容格式3:-RF显示和修改标志位状态第113页/共187页第114页/共187页第115页/共187页第116页/共187页(4)运行命令G格式:-G =地址1 地址2地址3(5)跟踪命令T格式1:-T=地址逐条指令跟踪格式2:-T=地址 值(6)汇编命令A格式:-A 地址第117页/共187页第118页/共187页第119页/共187页(4)运行命令G格式:-G =地址1 地址2地址3(5)跟踪命令T格式1:-T=地址逐条指令跟踪格式2:-T=地址 值(6)汇编命令A格式:-A

40、地址第120页/共187页第121页/共187页第122页/共187页(4)运行命令G格式:-G =地址1 地址2地址3(5)跟踪命令T格式1:-T=地址逐条指令跟踪格式2:-T=地址 值(6)汇编命令A格式:-A 地址第123页/共187页第124页/共187页第125页/共187页(4)运行命令G格式:-G =地址1 地址2地址3(5)跟踪命令T格式1:-T=地址逐条指令跟踪格式2:-T=地址 值(6)汇编命令A格式:-A 地址第126页/共187页第127页/共187页第128页/共187页第129页/共187页注:若输入的语句有语法错误,则DEBUG显示 ERROR 且重新显示现行的汇

41、编地址等待新的输入 (7)反汇编命令 U格式:-U 范围第130页/共187页第131页/共187页第132页/共187页第133页/共187页第134页/共187页第135页/共187页(8)退出命令Q格式:-Q退出DEBUG 返回DOS第136页/共187页第137页/共187页第138页/共187页第139页/共187页第140页/共187页三、指示性语句 伪指令语句不形成指令的机器码,仅告诉汇编程序为指令中的操作数如何存放,指令如何产生机器码 伪指令语句前如有标号,其后无冒号“:”如有操作数,可以有两个以上的操作数。伪指令在程序中起着定义、赋置说明、分段等作用。第141页/共187页1

42、、数据定义伪指令格式:变两名 助记符 操作数 ;注释DB:定义字节,其后的每个操作数占用一个字节DW:定义字,其后的每个操作数占用一个字DD:定义双字,其后的每个操作数占用两个字DQ:定义4个字,其后的每个操作数占用4个字Dt:定义10个字节,其后的每个操作数占用10个字节 第142页/共187页归纳为以下几种情况 (1)操作数可以是常量或常量表达式例如:X DB 25,42,14H,0,-30Y DW 123H,610,3A60HZ DD 3705H,15 X1 92 A1 40 0E 2Y2 30 13 C0 06 03 A0 5Z3 70 00 0第143页/共187页(2)伪指令后可用

43、操作数“?”分配并保留空间,不存数据例如:A DB 5,?DB?,?,10B DW?,15,?A05-0AB-0F00-第144页/共187页(3)可以用操作符DUP来复制一些操作数格式:EXPCOUNT DUP(操作数.操作数)例如:Y1 DB 2 DUP(11,?,15)Y2 DW 3 DUP(2500H,?)第145页/共187页Y1 DB 2 DUP(11,?,15)Y2 DW 3 DUP(2500H,?)Y10B-0F0B-0FY20025-0025-第146页/共187页例如:PARA DB 2DUP(3,2DUP(5,7),0),?0305PARA0705070003050705

44、0700-复制操作数DUP可以嵌套 第147页/共187页(4)可以定义一个表或一个字符串例如:110的平方值表可以定义如下:PFB DB 1,4,9,16,25,36,49,64,81定义字符串 STRINGS DB “GOOD MORNING”第148页/共187页2、符号定义语句格式:符号名 EQU 表达式伪指令可以把符号名定义为常量,或一个能求出常数值得表达式 例如:RT1 EQU 123FS EQU 32B5 EQU RT1+1第149页/共187页3、段定义伪指令(1)段定义伪指令SEGMENT/ENDS格式:段名 segment 定位类型 组合类型 类别段名 ends 功能:定义

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

46、date1Mov es,axCode ends 第153页/共187页返回 dos通常在代码段结束之前插入两条语句MOV AH,4CHINT 21H 第154页/共187页四、程序设计举例1、直线运行程序例如:求两个数的平均值。两个数分别放在X和Y单元中,结果放在Z单元中。设两个数分别为32和64编程如下:第155页/共187页DATE segment X DB 20H Y DB 40H X20Y40Z DB?DATE ENDS CODE segment ASSUME CS:CODE,DS:DATE START:MOV AX,DATE MOV DS,AX MOV AL,X 第156页/共187

47、页MOV AL,X ADD AL,Y MOV AH,00H ADC AH,00H MOV BL,02H DIV BL MOV Z,AL CODE ENDS END START 第157页/共187页2、分支程序设计分支程序:根据某种判断结果,从两个以上的程序中选择一个执行。条件分支段1分支段2或条件分支段2第158页/共187页例3、比较两个无符号数的大小,把大数存入MAX单元。DATE segment SHUJU DB X1,X2 MAX DB?DATE ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA 第159页/共187页MOV AX,DATA MOV D

48、S,AX MOV AL,SHUJU CMP AL,SHUJU+1 JA BRANCH BRANCH:MOV MAX,ALMOV AL,SHUJU+1 CODE ENDS END MOV AH,4CH INT 21H 第160页/共187页3、循环程序设计循环程序一般由四部分组成循环初值循环次数,循环正常工作的初始状态循环体循环工作的主体部分,为完成特定功能而设计的程序段 修改部分保证每次循环时,相关信息发生有规律的变化,为下一次循环作准备 循环控制部分控制循环的运行和结束 第161页/共187页例4、从XX单元开始10个连续单元中存放有10个无符号数,从中找出最大者送YY单元。XXYY分析AL

49、第162页/共187页Data segment Xx db 15,22,16,9,3,44,26,88,39,52 Yy db?Data ends Code segment Assume cs:code,ds:data Assume cs:code,ds:data Mov ax,data Mov ds,ax Mov al,xx 第163页/共187页lea bx,xx inc bx Cmp al,bx Mov cx,9 Jae next Xchg al,bx Loop next:loop1:loop1Mov yy,al Mov ah,4ch Int 21h Code ends End 第164

50、页/共187页常用系统功能调用01H号读取键盘字符并回显(单字符)调用方式MOV AH,01HINT 21H 说明等待按键 若是CTRL-BREAK则退出 其他键,将其ASCLL码送AL寄存器,同时送显示器显示 第165页/共187页02H号显示字符 调用方式MOV AH,02HINT 21H DL 要显示字符的ASCLL码说明将置入DL寄存器的字符送显示器显示 第166页/共187页08H号键盘输入单字符不显示 调用方式MOV AH,08HINT 21H 说明将输入的字符送AL寄存器 第167页/共187页09H号字符串输出显示 调用方式DX 要显示字符串的首地址MOV AH,09HINT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁