微机原理(课堂PPT)

上传人:日度 文档编号:144109374 上传时间:2020-09-06 格式:PPT 页数:51 大小:235.50KB
返回 下载 相关 举报
微机原理(课堂PPT)_第1页
第1页 / 共51页
微机原理(课堂PPT)_第2页
第2页 / 共51页
微机原理(课堂PPT)_第3页
第3页 / 共51页
微机原理(课堂PPT)_第4页
第4页 / 共51页
微机原理(课堂PPT)_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《微机原理(课堂PPT)》由会员分享,可在线阅读,更多相关《微机原理(课堂PPT)(51页珍藏版)》请在金锄头文库上搜索。

1、1,3.3 8086/8088指令系统,常用符号 OPRD 泛指各种类型的操作数 men 存储器操作数 acc 累加器操作数 dest 目的操作数 src 源操作数 disp 8位或16位偏移量,可用符号地址表示 DATA 8位或16位立即数 port输入输出端口,可用数字或表达式表示 ()表示寄存器的内容 表示存储单元的内容或便宜地址,2,3.3 8086/8088指令系统,可分成如下6类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令,3,3.3.1 数据传送指令,可实现 存储器 寄存器 I/O 数据传送指令又可分为如下四种: 通用传送 目标地址

2、传送 标志传送 输入输出,4,1.通用传送指令 (1) MOV dest,src; destsrc 传送的是字节还是字取决于指令中涉及的寄 存器是8位还是16位。 具体来说可实现: MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 例: MOVCL,DL MOVAX,BX MOVSI,CX MOVCL,BX+5,5, MOV reg,data ;立即数送寄存器 MOV AH,12H MOV mem,data ;立即数送存储单元 MOV WORD PTRBX,1005H MOV acc,mem ;存储单元送累加器 MOV AX,1000H MOV mem,acc ;

3、累加器送存储单元 MOV BX,AX MOV segreg,mem/reg ;存储单元/寄存器送 段寄存器 MOV DS,1000H MOV DS,AX MOV mem/reg,segreg ;段寄存器送存储单 MOV AX,ES MOV AX,ES 元/寄存器,6,MOV指令使用规则:,1) IP不能作目的寄存器 2) 不允许memmem 3) 不允许segregsegreg 4) 立即数不允许作为目的操作数 5) 不允许segreg立即数 6) 源操作数与目的操作数类型要一致,7,几个不能传送的解决办法:用AX作桥梁 存储器存储器: MOV AX,MEM1 MOV MEM2,AX 段寄存器

4、段寄存器: MOV AX,DS MOV ES,AX 段寄存器立即数: MOV AX,DATA MOV DS,AX,8,应用举例:将1000H开始的100个存储单元 全部填充为ASCII码2AH(*)。 程序段如下: MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN:MOV DI,AL INC DI DEC CX JNZ AGAIN HLT,9,上程序段存放在代码段中,設(CS)=109EH,则各条指令存放地址如下: CS : IP 指令 109E : 0100 MOV DI,1000H 109E : 0103 MOV CX,64H 109E : 0106 MOV

5、 AL,2AH 109E : 0108 MOV DI,AL 109E : 010A INC DI 109E : 010B DEC CX 109E : 010C JNZ 0108 109E : 010E HLT 109E : 0110,10,写入2AH(*)后,数据段中相应存储单元的内容改变如下: DS:1000 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1010 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1020 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2

6、A 2A 2A 2A 2A 2A DS:1030 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1040 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1050 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1060 2A 2A 2A 2A,11,一般数据传送指令,判断下列指令的正确性: MOV AL,BX MOV AX,SI05H MOV BXBP,BX MOV DS,1000H MOV DX,09H MOV 1200,SI,

7、12,什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作? 参见下图,(2) 堆栈操作指令,13,主程序,IP,继续执行,主程序,执行子程序,转子程序,压栈,弹出,返回主程序,主程序,IP,IP(下),继续执行,主程序,转子程序1,返回主程序,IP,执行子程序 2,转子程序2,返回子程序1,IP(下),执行子 程序1,继续执行,子程序1,(a),(b),子程序调用示意图,(a) 主程序调子程序; (b) 子程序嵌套示意图,压栈,弹出,IP(下),14,规定由SS指示堆栈段的段基址,堆栈指针SP始终指

8、向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。,SP,SS,堆栈段,进栈方向,退栈方向,栈底,栈顶,15, 压栈指令 PUSH src ; src为16位操作数 例:PUSHAX;将AX内容压栈 执行操作:(SP)-1高字节AH (SP)-2低字节AL (SP)(SP)- 2,16,设(AX)=1020H,执行示意图如图,低地址,存储区 (SS段),执行前 (AX)=1020,(SP),存储区 (SS段),进栈方向,执行后,20,10,(AL),(AH),2-8,PUSH AX指令执行示意图,(SP)-2,(SP),高地址,低地址,高地址,(SP)-1,17,压栈指令的

9、格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH BX PUSH DS,注意进栈方向是高地址向低地址发展。,18, 弹出指令 POPdest 例:POPBX;将栈顶内容弹至BX 执行操作:(BL)(SP) (BH)(SP)+1 (SP)(SP)+2,19,POP BX 的执行示意图如下图所示,低地址,存储区 (SS段),出栈方向,执行前,20,10,POP BX指令执行示意图,(SP),存储区 (SS段),执行后 (BX)=1020,(SP),(SP)+1,(SP)+2,BX,20,10,高地址,低地址,高地址,20,堆栈指令使用时

10、应注意几点: 堆栈操作总是按字进行 不能从栈顶弹出一个字给CS 堆栈指针为SS:SP,SP永远指向栈顶 SP自动进行增减量(-2,+2),21,格式:XCHG reg,mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。 举例: XCHGAX,BX XCHG2000,CL,(3)交换指令XCHG,22,(4)查表指令XLAT 执行的操作:AL(BX)+(AL) 又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,表项序号存于AL中。 例如:内存数据段有一张

11、16进制数的ASCII码表,设首地址为2000H,如欲查出表中第11个代码(代码序号从0开始)即十六进制数B的ASCII码。ASCII表在DS段中,并假设(DS)=4000H。见下页图。,23,30,31,32,.,39,41,42,.,45,46,.,42000H+0,42000H+0BH,0,1,2,9,A,B,E,F,十六进制数ASCII码表,存储器,24,则可用如下几条指令实现:,MOV BX,2000H ;(BX)表首地址 MOV AL,0BH ;(AL)序号 XALT ; 查表转换 执行后得到:(AL)= 42H = B,注意:转换表长度最大为256个表项(字节)。,25,(5)字

12、节-字转换指令,格式:CBW ;把AL的符号位复制到AH CWD ;把AX的符号位复制到DX 用途:用于有符号数的除法。 例如:(AL) = A7H,则执行CBW后,AH的内 容为FFH。,26,2. 输入输出(I/O)指令,只限于用累加器AL或AX来传送信息。 功能: (累加器)I/O端口 (1)输入指令IN 格式: IN acc,PORT ;PORT端口号0255 IN acc,DX ;DX表示的端口范围达64K 例:IN AL,80H ;(AL)(80H端口) IN AL,DX ;(AL)(DX),27,例:OUT 68H,AX ;(69H,68H)(AX) OUT DX,AL ;(DX

13、)(AL) 在使用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器,如: MOV DX,220H IN AL,DX ;将220H端口内容读入AL,(2) 输出指令OUT格式:OUT port,acc OUT DX,acc,28,3. 地址传送指令 共有三条: 格式:LEA reg,mem ; 将指定存储器的16位偏移 地址送指定寄存器 LDS reg, mem32; DS:reg(mem开始的四 个内存单元) LES reg, mem32; 同上,但DS改为ES 要求源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。,29,设:(SI)=1000

14、H 则执行该指令后,(BX)=1010H 注意以下两条指令差别: LEA BX,BUFFER MOV BX,BUFFER 前者表示将符号地址为BUFFER的存储单元的偏侈地址取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中.,例:LEABX,SI+10H,30,下面两条指令等效: LEA BX,BUFFER MOV BX, OFFSET BUFFER 其中OFFSET BUFFER表示存储器单元BUFFER的偏移地址。 二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,OFFSET只能取静态的地址。,31,LEA指令在程序中的应用,将数据段中首地址为MEM1 的

15、50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放。编写相应的程序段 。,32,LEA指令在程序中的应用,开 始,取源地址,取目标地址,送数据块长度到CL,传送一个字节,修改地址指针,修改计数值,计数值=0?,结 束,N,Y,33,LEA指令在程序中的应用,LEA SI,MEM1 LEA DI,MEM2 MOV CL,50 NEXT: MOV AL,SI MOV DI,AL INC SI INC DI DEC CL JNZ NEXT HLT,34,取远地址指针指令,LDS reg,MEM32 LES reg,MEM32 指令中源操作数是存储器某4个连续单元的偏移地址,目标操作数是间址寄存器。,35,LDS指令例,例: LDS DI,1200H MOV AX,DI,指令执行后:,36,LDS指令例,DS = 6000H DI = 1234H AX = 2233H,12H,34H,00H,60H,1200H,数据段 1,DS,DI,数据段2,33H,22H,61234H,3

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

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号