版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、下列指令源操作数和目的操作数的寻址方式分别是什么? (1) MOV DX,100H (2) MOV BX,0100H (3) MOV CX,DATASI (4) MOV ES:SI,AX (5) ADD AX,BXDI (6) AND AX,BX (7) XOR AX,BX (8) MOV AL,DATA BPDI 1第二节 8086/8088的指令系统 第一部分指令系统概述 第二部分 8086/8088的指令系统8086/8088的指令系统2第一部分指令系统概述8086/8088的指令系统中的基本指令共133条.可以分成6个功能组:1数据传送(Data transfer)2算术运算(Arit
2、hmetic)3逻辑运算和移位指令(Logic& Shift)4串操作(String manipulation)5控制转移(Control Transfer)6处理器控制(Processor Control)3介绍指令系统使用的符号:八位寄存器: AH,AL,BH,H,BL,CH,CL,DH,DL 十六位通用寄存器: AX,BX,CX,DX,SP,BP,SI,DI 堆栈指针 SP 指令指针 IP(或PC)标志位Flags目的和源变址寄存器DI, SI段寄存器CS, DS, ES, SS通用寄存器regAL或AX(取决于操作数长度) acc4src , dest源,目的操作数(下列寻址方式都可以
3、用) BX+SI+n,BX+DI+n,BP+SI+n,BP+DI+nSI+n,DI+n, BP+n, BX+nN,r 存储器单元的内容(正常在数据段)ES: 附加存储器段的内容 Sreg 段寄存器(CS,DS,ES,SS)MEM 内存操作数(MEM8MEM16)IMM 立即数 (IMM8IMM16)P8 8位I/O端口号58086/8088指令助记符表68086/8088指令助记符表(续)7学习指令的注意事项指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式该指令中的操作数可以采用何种寻址方式指令对标志的影响该指令执行后是否对各个标志位有影响,
4、以及如何影响其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等8第二部分 8086/8088指令系统一、 数据传送指令(Data transfer)(一)通用传送指令(General Purpose Transfer)(二)输入输出指令(Input and Output)(三)目的地址传送指令(Address-object transfer)(四)标志传送指令(Flag register transfer)9一数据传送指令功能: 负责把数据、地址或立即数传送到寄存器或存储单元。特点: 它是计算机最基本、最重要的一种操作,使用比例最高。种类(分四种)
5、: 通用传送指令包括: MOV, PUSH, POP ,XCHG, XLAT。 输入输出指令指令包括: IN, OUT。 目的地址传送指令包括: LEA, LDS, LES 标志传送指令包括 : LAHF, SAHF, PUSHF, POPF 除 SAHF和POPF指令外,对标志位没有影响。10(一)通用传送指令(General Purpose Transfer)8088提供方便灵活的通用的传送操作,适用于大多数操作数。通用传送指令(除了XCHG以外)是唯一允许以段寄存器为操作数指令。通用传送指令包括:1、MOV (Movement)2、PUSH (Push word onto stack)
6、POP (Pop word off stack)3、XCHG (Exchange)4、XLAT (Translate)111MOVdest,src ; (dest) (src) 功能: 把一个字节(B)或一个字(W)操作数由源传送至目的。 实现:寄存器 寄存器/存储器之间;立即数寄存器/存储器寄存器/存储器段寄存器之间的数据传送。通用寄存器AX BX CX DXBP SP SI DIAL BL CL DLAH BH CH DH段寄存器CS DS SS ES存储器立即数16位816位816位816位MOV 指令数据传送方向12 具体说,通用数据传送指令能实现: CPU内部寄存器之间的数据的任意传
7、送(除了码段寄存器CS和指令指针IP以外)。段寄存器之间不能传送。例: MOV DL,CH ; 8位寄存器 8位寄存器 MOV AX,DX ; 16位寄存器 16位寄存器 MOV SI, BP MOV DS,BX ;通用寄存器 段寄存器 MOV AX, CS ;段寄存器 通用寄存器13立即数传送至CPU内部通用寄存器组 (AX、BX、CX、DX、BP、SP、SI、DI)。 用于给寄存器赋初值。 不能直接给段寄存器赋值例: MOV CL,04H;立即数8位寄存器 MOV AX,03FFH;立即数16位寄存器14CPU内部寄存器(除CS和IP外)与存储器(所有寻址方式)之间数据传送。可以实现一字节
8、或一个字的传送。 存储单元之间不能直接传送 例:MOV MEM , AX; 累加器存储器,直接寻址MOV MEM ,DS;段寄存器存储器,直接寻址MOV DISPBX ,CX;寄存器存储器,变址寻址MOV AX , DISP SI;存储器累加器,变址寻址MOV DS , MEM;存储器段寄存器,直接寻址MOV CX , DISP BX SI ;存储器累加器,相对基址加变址15 注意:(1)不能用一条MOV指令实现以下传送。 存储单元之间的传送MOV MEM2 , MEM1 错。MOV AX , MEM1MOV MEM2 , AX 对。 立即数送段寄存器 例 : MOV DS,2000H 错。
9、MOV AX, 2000HMOV DS , AX 对。 16 段寄存器之间的传送MOV ES , DS ; 错MOV AX , DSMOV ES , AX ; 对 。 注意CS和IP的使用CS和IP不能作为目标操作数,CS可以作为源操作数。例:MOV CS,AX ; 错 MOV AX,CS ;对 。 MOV IP, AX ;错 MOV AX, IP ; 对。17(2)段地址的默认BX、SI、DI间址默认段地址为DS,BP间址默认段地址SS。(3)凡是遇到给SS赋值指令,系统自动禁止外部中断,执行本条指令和下条指令,恢复对SS寄存器赋值前的中断开放情况。这样做为了允许程序员连续用两条指令分别对S
10、S和SP寄存器赋值,同时又防止堆栈空间变动过程出现中断。*在修改SS和SP的指令之间不要插入其他指令。(4)所有通用传送指令不影响标志位(除SAHF、POPF以外)。18 MOV指令应用例:实现将AREA1开始的100个数据传送到AREA2开始的单元。AREA1:AREA2:100个数据19分析题意: 可以用200条MOV指令来完成100个数据传送, 指令操作重复,每个数据传送后的地址是变化的。 可以利用循环,但每循环一次要修改地址(源地址和目的地址),必须把地址放在寄存器当中,用寄存器间接寻址来寻找操作数.20得到如下程序:MOV SI,OFFSET AREA1 MOV DI,OFFSET
11、AREA2 MOV CX,100AGAIN :MOV AL,SIMOV DI,AL INC SI ;修改地址指针 INC DI ;修改地址指针 DEC CX;修改个数 JNZ AGAIN21指出以下这些指令的对或错,并说明原因。1、MOV 52,AH2、MOV CS,AH3、MOV DI,SI4、MOV 1000,SI5、MOV IP,BX6、MOV DS,1234H立即数不能作为目的操作数 CS不能作为目的操作数 内存单元之间不能直接传送 内存单元之间不能直接传送 IP不能作为目的操作数 不能用立即数对段寄存器赋值222 PUSH (Push word onto stack) POP (Po
12、p word off stack) 这是两条堆栈操作指令。(1) 先回忆一下什么是堆栈,为什么需要堆栈堆栈按照先进后出原则组织的一段内存区域特点: 下推式的(规定堆栈设置在堆栈段内)改变SP的内容,随着推入堆栈内容增加,SP的值减少。 后进先出工作原则(Last In First Out 简称LIFO)23堆栈用途: 存放CPU寄存器或存储器中暂时不使用的数据, 使用数据时将其弹出; 调用子程序, 响应中断时都要用到堆栈。 调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。24调用子程序时需保留内容: 调用子程序:将下条指令地址即IP值保留下来(8088中码段寄存
13、器CS和指令指针IP), 才能保证子程序执行完后准确返回主程序继续执行。执行子程序时,通常用到内部寄存器,执行结果会影响标志位,必须在调用子程序之前将现状保护起来 子程序嵌套或子程序递归(自调自) 保留许多信息,而且保证正确返回(且后进先出)。 后保留先取出原则(即LIFO-LAST In First out)。注意:SP堆栈指针,始终指向栈顶。SP初值用MOV SP,i m来设定。25(2) 堆栈操作指令 (堆栈操作指令有两条): 入栈指令格式:PUSH src; (SP) (SP)-2 (SP)+1,(SP) (src) 把一个字从源操作数由SP指向堆栈顶部。操作如:PUSH AX 出栈指
14、令格式:POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2把现行SP所指向堆栈顶部的一个字 指定的目的操作数,同时进行修改堆栈指针的操作。操作如: POP BX26应用时注意: 堆栈操作都按字操作。 PUSH , POP 指令的操作数可能有三种:寄存器(通用寄存器,地址指针,变址寄存器),段寄存器(CS除外,PUSH CS 合法,POP CS 非法)存储器,操作数必须是16位的,且不能是立即数。 执行PUSH 指令, (SP)-2 (SP),低字节放在低地址,高字节放在高地址。 PUSH ,POP指令应该成对使用,保持堆栈原有状态。 堆栈最大容量即为SP的初值与S
15、S之间的差。27堆栈应用举例: 例:用BP的基址指令 代替POP指令MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例 : 压入堆栈的内容与弹出内容顺序相反PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX283、交换指令(Exchange)格式:XCHG dest , src;(dest) (src)执行操作: 把一个字节或一个字的源操作数与目的操作数相交换。 可以 实现: 寄存器之间 寄存器和存储器之间注意: 存储器之间不能交换,两个操作数中必须有一个在寄存器中;
16、 段寄存器不能作为一个操作数; 允许字或字节操作,不影响标志位。29应用举例:XCHG BL,DLXCHG AX,SIXCHG COUNTDI, AXXCHG BX,DI(错)XCHG DS, AX (错)30XLAT(Trans late)换码指令: 该指令不影响标志位。格式: XLAT str_table;(AL)(BX )+(AL) 或 XLAT str_table表格符号地址(首地址), 只是为了提高可读性而设置,汇编时仍用BX。 31XLAT指令使用方法: 先建立一个字节表格; 表格首偏移地址存入BX; 需要转换代码的序号(相对与表格首地址位移量)存入AL; (表中第一个元素的序号为
17、0) 执行XLAT指令后,表中指定序号的元素存于AL中。 (AL)为转换的代码。由于AL只有8位,所以表的长度不能超过256字节. 32XLAT指令应用: 若把字符的扫描码转换成ASCII码; 或数字09转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。例:内存的数据段中有一张十六进制数字的ASCII码表。 首地址为:Hex_table ,欲查出表中第10个元素(A)33执行指令序列:MOV BX,OFFSET Hex_tableMOV AL,0AHXLAT Hex_table假设:(DS)=F000H, Hex_table=0040H(AL)=0AH执行XLAT以后: (AL)=
18、41H=(F004AH),即“A”的ASCII码。30H31H32H.39H41H42H.46H.Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FHFBA912016进制数的ASCII码表34(二)输入输出指令(Input and Output)输入输出指令共两条: 1、 IN (Input byte or word) 2 、OUT (Output byte or word) 输入指令用于CPU从外设端口接受数据, 输出指令用于CPU向外设端口发送数据。 无论接受还是发送数据,必须通过累加器AX(字)或A
19、L(字节),又称累加器专用传送指令 。 输入、输出指令不影响标志位。35每个外设要占几个端口:数据口,状态口和控制口。36信息交换要通过端口,在IBMPC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有65536个I/O端口。 A0 - A15译码形成。端口号:端口号(即外设端口地址)为0000H - FFFFH。PC机仅使用A0 - A9译码形成I/O口地址,即1024H个口地址 端口号:0000H - 03FFH其中: A9=1,表示扩充槽上的口地址。37长格式:端口号中前256个端口(0-FFH),
20、可以直接写在指令中,这就是长格式(直接寻址)。端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。短格式:当端口号256时,只能使用短格式,必须先把端口号放到DX寄存器中(间接寻址)。不需要用任何段寄存器来修改它的值。381、IN (Input byte or word) 输入指令格式:IN acc, port ;(acc) (port)具体形式有四种:IN AL, data8 ; 端口地址8位,输入一个字节IN AX, data8 ;端口地址8位,输入一个字IN AL, DX ;端口地址16位,输入一个字节IN AX, DX ;端口地址16位,输入一个字 必须通过累加器AX
21、(字)或AL(节)输入数据。392 、OUT(Output byte or word) 输出指令格式: OUT port, acc ;(port) (acc)具体形式有四种: OUT data8 , AL ; 端口地址8位,输出一个字节 OUT data8, AX ;端口地址8位,输出一个字 OUT DX , AL ;端口地址16位,输出一个字节 OUT DX , AX ;端口地址16位,输出一个字 必须通过累加器AX(字)或AL(节)输出数据。40例1:实现(29H)(28H)(DATA_WORD) IN AX,28H MOV DATA_WORD,AX例2:从端口3FCH 送一个字到AX寄存
22、器MOV DX,3FCH IN AX,DX ; (AL)(3FCH), (AH)(3FDH) 例3:实现将(AL) (05H) OUT 5,AL;(05H)(AL)41(三)目的地址传送指令(Address-object transfer) 8086 /8088 提供三条:地址指针写入指定寄存器或寄存器对指令。1、LEA(Load Effective Address)2、LDS (Load pointer using DS)3、LES (Load pointer using ES)421、LEA(Load Effective Address)格式: LEA reg16 , mem16 ;EA(
23、reg16)功能:加载有效地址,用于写进地址指针。把指令指定存储器操作数有效地址装入指定的寄存器例:设(BX)=0400H,(SI)=003CHLEA BX,BX+SI+0F62H执行指令后: EA=(BX)+(SI)=0F62H=0400H+003CH+0F62H=139EH(BX)=139EH43注意:设 (DS)=3000HBUFFER=1000H(31000H)=0040H(1) LEA 指令与MOV 的区别LEA BX , BUFFER ;(BX)=1000HMOV BX , BUFFER ; (BX)=0040H LEA 指令与MOV等价LEA BX , BUFFER ; (BX)
24、=1000HMOV BX , OFFSET BUFFER ; (BX)=1000H44(2)LEA 指令中的目标寄存器必须是16位的通用寄存器,源操作数必须是一个存储器。(3)请思考下列指令的正、误LEA DX ,BETABXSILEA DX , AX452、LDS (Load pointer using DS)格式:LDS reg16, mem32 ;(reg16)(EA)(DS)(EA)+2)功能:将指令指定32位地址指针送指令指定寄存器和DS。将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址) 装入到DS段寄存器。用于写远地址指针。46
25、例: 假设: (DS)=C 000H指令:LDS SI, 0010H执行指令后: (SI)=0180H (DS)=2000H 473、LES (Load pointer using ES)格式:LES reg16, mem32 ;(reg16)(EA) (ES)(EA)+2)功能:把源操作数指定的4个相继字节送指令指定的寄存器及ES寄存器中。 此指令常常指定DI寄存器。将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址) 装入到ES段寄存器。用于写远地址指针。48例: 假设: (DS)=B 000H (BX)=080AH指令:LES DI, BX执行指令后: (DI)=05
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品制桶市场需求与消费特点分析
- 芭蕾舞鞋市场发展预测和趋势分析
- 2024年度产品代理合同标的及代理服务具体规定
- 试电笔市场发展现状调查及供需格局分析预测报告
- 裱纸市场发展预测和趋势分析
- 2024年度企业财务审计与税务筹划服务合同
- 2024年度危险品仓储安全监管合同
- 2024年度港口旅游景点开发承包合同
- 运载工具电子防盗装置市场发展预测和趋势分析
- 2024年度体育赛事组织与推广合同标的为国际足球比赛
- 牛津自然拼读Oxford Phonics WorldLevel1Unit1 lesson1课件
- 漫画艺术欣赏及创作
- 中药材储存仓库技术规范
- 与月亮有关的古诗
- 203741_彩绘工程施工组织设计
- 1073 法律文书-国家开放大学2021年(202101-202107)期末考试真题及答案【2套】-开放本科
- 基础生态学课后习题和答案
- 工程亮点展示
- 分层审核检查表LPA全套案例
- 第九届中国国际航空航天博览会PPT课件
- 财务部长竞聘PPT课件
评论
0/150
提交评论