版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1, 指令系统 一组指令的集合,第3章 寻址方式和指令系统, 寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式,2,3.1 寻址方式 一、8086的寻址方式,1.与数据有关的寻址方式:以 MOV 指令为例 立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址寻址 MOV AX , MASK BX SI ,存储器寻址,3,(1) 立即寻址方式* 操作数在指令中给出 指令格式: M
2、OV AL, 5 MOV AX, 3064H MOV AL, A * 只能用于 SRC 字段 MOV 40H, AL * SRC 和 DST 的字长一致 MOV AH, 3064H ,4,(2) 寄存器寻址方式* 操作数在指定的寄存器中 MOV AX, BX MOV AL, BH MOV AX, 3064H * 字节寄存器只有 AH AL BH BL CH CL DH DL * SRC 和 DST 的字长一致 MOV AH, BX * CS 不能用 MOV 指令改变 MOV CS, AX ,5,(3) 直接寻址方式* 有效地址EA由指令直接给出 例:MOV AX, 2000H EA=2000H
3、, 假设(DS)=3000H, 那么PA=32000H,* 隐含的段为数据段 DS * 可使用段跨越前缀 MOV AX, ES: 2000H * 操作数地址可由变量(符号地址)表示, 但要注意 VALUE DB 10 变量的属性 MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE ,6,寄存器间接寻址* EA 在基址寄存器(BX/BP) 或变址寄存器(SI/DI) 中 MOV AX, BX PA = 16d (DS) + (BX) MOV AX, ES:BX PA = 16d (ES) + (BX) MOV AX, BP PA = 16d (S
4、S) + (BP) * 不允许使用AX、CX、DX 存放 EA MOV AX, CX * SRC 和 DST 的字长一致 MOV DL, BX ; BX指示一个字节单元 MOV DX, BX ; BX指示一个字单元 * 适于数组、字符串、表格的处理,7,(5) 寄存器相对寻址方式* 指令格式: MOV AX, COUNTSI 或 MOV AX, COUNT+SI 假设 (DS)=3000H, (SI)=2000H, COUNT=3000H, 则: PA = 35000H 假设(35000H)=1234H, 那么 (AX)=1234H * 适于数组、字符串、表格的处理,8,(6) 基址变址寻址方
5、式* 指令格式: MOV AX, BX DI MOV AX, BX+DI MOV AX, ES:BX SI * 适于数组、字符串、表格的处理 * 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX, BX BP MOV AX, SI DI ,9,( 7 ) 相对基址变址寻址方式 MOV AX, MASK BX SI 或 MOV AX, MASK BX+SI 或 MOV AX, MASK+BX+SI,10,11,例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR! , 0DH , 0AH , $ COUNT DW 17 DA
6、TA ENDS ( 1 ) 直接寻址 mov dl, string mov ah, 2 int 21h ; 显示字符H mov dl, string+1 mov ah, 2 int 21h ; 显示字符A : :,12,( 2 ) 寄存器间接寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 bx Next : mov dl, bx mov ah, 2 int 21h ; 显示一个字符 inc bx loop next ; 循环指令 ( 3 ) 寄存器相对寻址 mov cx, count ; mov cx, 17 mo
7、v si, 0 Next : mov dl, stringsi ; mov dl, string+si mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令,13,( 4 ) 基址变址寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 bx mov si, 0 Next : mov dl, bx si ; mov dl, bx+si mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令 ( 5 ) DOS 显示字符串功能 m
8、ov dx, offset string ; string的偏址 dx ; lea dx, string mov ah, 9 int 21h ; 显示一串字符,14,2. 与转移地址有关的寻址方式:,段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR BX ,用来确定转移指令及转子指令的转向地址。,15,(1) 段内直接寻址,转向的有效地址 = 当前(IP) + 位移量(8bit/16bit),16,例: JMP NEAR PTR NEXT 近转移
9、 -32768 +32767 JMP SHORT NEXT 短转移 -128 +127,17,(2) 段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到) 例: TABLE = 20A2H (BX) = 1256H (SI) = 528EH (DS) = 2000H (232F8H) = 3280H (264E4H) = 2450H JMP BX ; (IP)=1256H JMP TABLEBX JMP WORD PTR TABLEBX ; (IP)=3280H JMP BXSI JMP WORD PTR BXSI ; (IP)=2450H
10、,18,code1 segment jmp far ptr next code1 ends,code2 segment next: . code2 ends,(3) 段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS 和 IP 例:,19,(4) 段间间接寻址 用存储器中的两个相继字的内容取代CS 和 IP (存储单元的地址可用存储器寻址方式得到) 例: JMP DWORD PTR INTERS+BX PA=(DS)24 + (BX) + INTERS (PA+1, PA)IP (PA+3, PA+2) CS,20,二、80 x86 寻址方式的扩充, 支持32位数据操作 MOV EAX,
11、 12345678H MOV EAX, EBX 支持4GB存储空间寻址 MOV EAX, EBX +ESI MOV EAX, EBX+ESI+20H,21,EA= (基址寄存器) + (变址寄存器) 比例因子 + 位移量,( 1 ) 比例变址寻址方式 例:MOV EAX, COUNT ESI 4 , 带比例因子的寻址方式,22,(2) 基址比例变址寻址方式 例:MOV ECX, EAX EDI 4 (3) 相对基址比例变址寻址方式 例:MOV EAX, TABLE EBP EDI 4 16位和32位寻址的差异 地址成分 16位寻址 32位寻址 基址寄存器 BX、BP 任何32位通用寄存器 变址
12、寄存器 SI、DI 除ESP外的任何32位通用寄存器 比例因子 1 1、2、4、8,23, 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令,3.2 80 x86的指令系统,24,重点关注: 指令的汇编格式 指令的基本功能 指令支持的寻址方式 指令的执行对标志位的影响 指令的特殊要求,25,一、8086指令系统 1. 数据传送指令 通用数据传送指令 MOV、PUSH、POP、XCHG 累加器专用传送指令 IN、OUT、XLAT 地址传送指令 LEA、LDS、LES 标志寄存器传送指令 LAHF、SAHF、PUSHF、POPF 类型转换指令 CBW、CWD,2
13、6,传送指令: MOV DST, SRC 执行操作: (DST) (SRC) 注意: * DST、SRC 不能同时为段寄存器 MOV DS, ES * 立即数不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即数和CS * DST、SRC 不能同时为存储器寻址 * 不影响标志位, 通用数据传送指令,MOV AX, DSEG MOV DS, AX,27,进栈指令: PUSH SRC 执行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC) 出栈指令: POP DST 执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2 堆
14、栈:先进后出的存储区,段地址存放在SS中, SP在任何时候都指向栈顶,进出栈后自动修改SP。 注意: * 堆栈操作必须以字为单位。 * 不影响标志位 * 不能用立即寻址方式 PUSH 1234H * DST不能是CS POP CS ,28,例:假设 (AX) = 2107 H , 执行 PUSH AX,29,例: POP BX,30,例: PUSH DS SUB AX, AX PUSH AX RET 例: PUSH AX PUSH BX PUSH CX ;其间用到AX、BX、CX POP CX ; 后进先出 POP BX POP AX,31,交换指令: XCHG OPR1, OPR2 执行操作
15、: (OPR1) (OPR2) 注意: * 不影响标志位 * 不允许使用段寄存器 例:XCHG BX, BP+SI XCHG AL, BH,32, 累加器专用传送指令(只限使用AX或AL) 输入指令 IN (I/O CPU) 长格式: IN AL, PORT (字节) IN AX, PORT (字) 执行操作:(AL) ( PORT ) (字节) (AX) ( PORT+1, PORT )(字) 短格式: IN AL, DX (字节) IN AX, DX (字) 执行操作:(AL) ( (DX) ) (字节) (AX) ( (DX)+1, (DX) )(字),33,输出指令 OUT (CPU
16、I/O) 长格式: OUT PORT, AL (字节) OUT PORT, AX (字) 执行操作:( PORT ) (AL) (字节) ( PORT+1, PORT ) (AX)(字) 短格式: OUT DX, AL (字节) OUT DX, AX (字) 执行操作:( (DX) ) (AL) (字节) ( (DX)+1, (DX) ) (AX)(字),34,注意: * 不影响标志位 * 前256个端口号00HFFH可直接在指令中指定(长格式) * 如果端口号 256,端口号 DX(短格式) 例: IN AX, 28H MOV DATA_WORD, AX 例: MOV DX, 3FCH IN AX, DX 例: OUT 5, AL 例:测试某状态寄存器(端口号27H)的第2位是否为1 IN AL, 27H TEST AL, 00000100B JNZ ERROR ;若第2位为1,转ERROR处理,35,例:Sound程序,mov dx, 100 in al, 61h and al,11111100b sound: xor al,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拉拉裤生产线项目技术方案
- 进度控制工程方案
- 混凝土和砂浆用天然沸石粉施工技术方案
- 5G赋能影视制作-第1篇
- 2026金融服务科技创新趋势与监管政策分析报告
- 2026连锁美容院经营趋势及未来商业模式分析报告
- 2026年餐饮管理服务合同范本含食品安全条款
- 2026年生物制药项目投资合同协议
- 八年级上册《道德与法治》教学计划
- 初中英语宾语从句规则及例句解析
- 2025贵州贵阳市投资控股集团房地产置业有限公司招聘12人笔试历年备考题库附带答案详解试卷2套
- 雨课堂在线学堂《中国哲学经典著作导读》作业单元考核答案
- 高速服务站安全培训课件
- 岩棉夹芯板内墙施工方案
- 2024年潜江市教育局招聘教师真题
- 小餐饮经营许可申请书
- 激光选区熔化技术(SLM)应用与发展
- 顶棚粉刷施工方案及质量控制措施
- 河北省机关事业单位技师2025公共基础知识之职业道德题库(附答案+解析)
- 公路交通工程钢构件防腐技术条件-编制说明
- 2025秋形势与政策课件-聚焦建设更高水平平安中国
评论
0/150
提交评论