首页 汇编第3章(1)

汇编第3章(1)

举报
开通vip

汇编第3章(1)null第3章 80x86的指令系统和寻址方式第3章 80x86的指令系统和寻址方式3.0 预备知识 3.1 80x86的寻址方式 3.2 程序占有的空间和时间 3.3 80x86的指令系统null3.0 预备知识 (1) 指令、指令系统和程序 (2) 机器码和机器语言 (3) 助记符和汇编语言 (4) 高级语言 (5) 8086/8088指令格式简介null CPU是一个可以完成一些基本操作的电子器件。 用编码表示CPU的一个基本操作,称为一条指令。 全部指令集称为指令系统。 指令系统反映 CPU...

汇编第3章(1)
null第3章 80x86的指令系统和寻址方式第3章 80x86的指令系统和寻址方式3.0 预备知识 3.1 80x86的寻址方式 3.2 程序占有的空间和时间 3.3 80x86的指令系统null3.0 预备知识 (1) 指令、指令系统和程序 (2) 机器码和机器语言 (3) 助记符和汇编语言 (4) 高级语言 (5) 8086/8088指令格式简介null CPU是一个可以完成一些基本操作的电子器件。 用编码表示CPU的一个基本操作,称为一条指令。 全部指令集称为指令系统。 指令系统反映 CPU的基本功能, 是硬件设计人员和程序员能见到的机器的主要属性, 是硬件构成的计算机系统向外部世界提供的直接界面。(1) 指令、指令系统和程序null 程序是为要解决的问题编写出来的指令集合 一个CPU的指令系统是固定的, 不同类型的CPU其指令系统不同; 同一系列向上兼容。 用户为解决自己的问题所编写的程序称为源程序。null(2) 机器码和机器语言 应用:显示设备简单的单片机 家用电器、固化在ROM上的程序等 机器语言是机器码及其使用的一组规则。 用机器语言编写的程序称为目标程序。 机器语言特点:CPU能直接识别的唯一语言 面向机器,可直接被计算机执行 执行速度快,占用内存空间小 编程效率低、可读性差、可移值性差 用二进制数编码表示的指令,称为机器指令或机器码。null例 将地址为2000H和2001H 的两内存单元内容相加, 结果存在地址2002H单元中,程序如下: A0 00 20 02 06 01 20 A2 02 20数据暂存器PSW标志 寄存器控制电路指令译码器AX BX CX DX SI DI BP SP指 令 队 列总线 接口控制电路运 算 器 地址总线AB数据总线DB控制总线CB 地 址 译 码 器IP地址加法器DS ESSS CS1010 0000 0000 0000 0010 0000 0000 0010 0000 0110 0000 0001 0010 0000 1010 0010 0000 0010 0010 0000A0 00 20 02 06 01 20 A2 02 20MOV AL , [2000H] ADD AL , [2001H] MOV [2002H], ALnull(3) 助记符和汇编语言 用助记符等表示的指令称为汇编格式指令 例 MOV AL, 0 汇编语言是汇编格式指令、伪指令及其使用的一组规则。 用汇编语言编写的程序称汇编语言程序。 助记符是有助记忆、并能描述指令功能的符号。 通常是指令功能的英文单词的缩写。 例 数的传送指令用助记符MOV 加法用ADD,转移用JMP等null上例 将地址为2000H和2001H 的两内存单元内容相加, 结果存在地址2002H单元中。 汇编格式指令与机器指令一一对应 用汇编语言编好的程序, 必须翻译成机器码表示的程序,计算机才能运行。 汇编程序是将汇编语言程序翻译成机器语言的一种系统程序。用机器码编程: A0 00 20 02 06 01 20 A2 02 20 用汇编语言编写的确程序段为: MOV AL , var1 ADD AL , var2 MOV var3 , ALnull 汇编语言和机器语言编写的程序: 面向机器,反映机器运行的实际过程, 与计算机的硬件结构和指令系统密切相关 算法是用计算机的指令, 寄存器等描述, 要了解CPU的编程结构、寻址方式、指令系统才能设计程序 占内存少,执行速度快 编写繁琐、调试困难汇编语言相对于机器语言编写的程序: 汇编语言程序,易读易懂,便于修改。null(4) 高级语言 高级语言是独立于机器、面向过程或对象的语言。 算法是按照人的思维方式给出,比较接近人的自然语言。 上例 高级语言程序段为: var3 = var1 + var2 由翻译程序将高级语言源程序翻译目标程序, 即用机器码表示的程序,机器才能执行。 (不同类型机器由于指令系统不同,它们的编译程序不同) Fortran、 Basic、 C等均是高级语言。 使用高级语言编程,效率高,可读性、可移植性强。null(1) 操作码 指明CPU要执行什么样的操作。 是一条指令必不可少的部分,用助记符表示。(5)8086/8088指令格式简介null 操作数来源 指明操作数所在的地方有三种来源: ① 操作数在指令中,称立即数操作数 如 MOV AL , 9 ② 操作数在寄存器中,称寄存器操作数 指令中给出用符号表示的寄存器名。 如 MOV AL , 9 ③ 操作数在内存单元中,称存储器操作数或内存操作数 指令中给出该内存单元的地址。用[ ]表示存储器操作数 如 MOV AL , [ 2000H ]null 操作数个数 按指令格式中,操作数个数的多少分为四类: 无操作数: 指令只有一个操作码,没有操作数 单操作数: 指令中给出一个操作数 双操作数: 指令中给出两个操作数。 三操作数:指令中给出两个操作数。null① 无操作数: 指令只有一个操作码,没有操作数。有两种可能: ▲ 有些操作不需要操作数。 如 HLT,NOP等处理机控制指令。 ▲ 操作数隐含在指令中。 如 AAA , DAA等调整指令。null② 单操作数: 指令中给出一个操作数。有两种可能: ▲有些操作只需要一个操作数 如 INC AL ; (AL) ← (AL)+ 1 ▲有些操作将另一个操作数隐含在指令中 如 MUL BL ; (AX) ← (AL)×(BL)nullnull④ 三操作数: 指令中给出三个操作数。 如 IMUL BX, DX, 6 ;(BX) ← (DX) *6 目的操作数 源操作数 立即数 操作后的结果通常存放在目的操作数中。 null一地址指令: INC AX DEC CX 二地址指令: MOV AX, [2000H] ADD AH, BL 三地址指令: IMUL BX,DX,7指令:通常,指令的第一个字节或头两个字节为指令的操作码和寻址方式,统称为操作码域。 操作码域之后的字节统称为操作数域 (5) 指令的格式 指令格式 操作码 操作数 例 ADD AL,10Hnull3.1 80x86的寻址方式与数据有关的寻址方式 与转移地址有关的寻址方式null3.1.1 与数据有关的寻址方式 以 MOV 指令为例 1. 立即寻址方式* —— 操作数在指令中给出 MOV AL, 5 MOV AX, 3064H * 只能用于SRC字段 * SRC 和 DST的字长一致  MOV AH, 3064H适用于给寄存器赋初值null 2. 寄存器寻址方式* —— 操作数在指定的寄存器中 MOV AX, BX MOV AL, BH * 字节寄存器只有 AH AL BH BL CH CL DH DL * SRC 和 DST的字长一致  MOV AH, BX * CS不能用MOV指令改变  MOV CS, AX运算速度快null存储器寻址(除代码段) 四种成分的组合EA=基址+(变址*比例因子)+位移量位移量:存放在指令中的一个8位、16位或32位的数, 通常是个地址 基 址: 基址寄存器中的内容,通常用来指向数组或字符串的首地址 变 址: 变址寄存器中的内容,通常用来指向数组中的某个元素或字 符串中的某个字符 比例因子:386+,值可为1,2,4,8,与变址相乘用于访问元素长度 为2、4、8字节的数组null16位/32位寻址时有效地址的四种成分的组成null默认段选择规则null段跨越前缀 用于改变系统所指定的默认段选择规则有三种情况不允许使用段跨越前缀: 1、串处理指令的目的串必须用ES 2、PUSH指令的目的和POP指令的源必须用SS段 3、指令必须存放在CS段中nullnull3. 直接寻址方式* —— 有效地址EA由指令直接给出 有效地址EA:操作数的偏移地址 物理地址PA = 16d  (DS) + EA 例:MOV AX, [2000H] EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H 例:操作数地址可由变量(符号地址)表示 MOV AH, VALUE ( VALUE DB 10 )5030 32000AH AL3050(AX) = 3050Hnull3. 直接寻址方式* * 隐含的段为数据段 DS * 可使用段跨越前缀 MOV AX, ES :[2000H] * 使用变量时,要注意变量的属性 VALUE DB 10  MOV AX, VALUE  MOV AX, WORD PTR VALUE * 适于处理单个变量null80x86 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 :   双操作数指令中,只能有一个操作数使用存储器方式,因此,经常有一个变量要送到寄存器。null4. 寄存器间接寻址方式* ——EA在基址寄存器(BX/BP) 或变址寄存器(SI/DI)中 BX, SI, DI  (DS) 物理地址 = 16d  (DS) + BP  (SS) 物理地址 = 16d  (SS) + (BP) MOV AX, [BX] PA = 16d  (DS) + (BX) MOV AX, ES:[BX] PA = 16d  (ES) + (BX) MOV AX, [BP] PA = 16d  (SS) + (BP)(BX) (SI) (DI)null 4. 寄存器间接寻址方式* * 不允许使用AX、CX、DX存放EA  MOV AX, [CX] * SRC 和 DST的字长一致 MOV DL, [BX] ; [BX]指示一个字节单元 MOV DX, [BX] ; [BX]指示一个字单元 * 适于数组、字符串、 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 的处理 null5. 寄存器相对寻址方式(直接变址寻址)* 例: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI] 假设(DS)=3000H, (SI)=2000H, COUNT=3000H 那么 PA = 35000H 假设(35000H)=1234H, 那么 (AX)=1234H * 适于数组、字符串、表格的处理 有效地址 =(BX) (BP) (SI) (DI)+8位 16位位移量null6. 基址变址寻址方式* MOV AX, [BX][DI] 或 MOV AX, [BX+DI] MOV AX, ES:[BX][SI] * 适于数组、字符串、表格的处理 * 必须是一个基址寄存器和一个变址寄存器的组合  MOV AX, [BX][BP]  MOV AX, [SI][DI]有效地址 =(BX) (BP)+(SI) (DI)null7. 相对基址变址寻址方式* MOV AX, MASK[BX][SI] 或 MOV AX, MASK[BX+SI] 或 MOV AX, [MASK+BX+SI] * 适于堆栈处理和二维数组处理 有效地址 =(BX) (BP)+(SI) (DI)+8位 16位位移量null例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB ‘HAPPY NEW YEAR!’, 0DH , 0AH , ‘$’ COUNT DW 17 DATA ENDS (1)直接寻址 mov dl, string ; mov dl, ‘H’ mov ah, 2 int 21h ; 显示字符‘H’ mov dl, string+1 ; mov dl, ‘A’ mov ah, 2 int 21h ; 显示字符‘A’ …...null(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 mov si, 0 next: mov dl, string[si] ; mov dl, [string+si] mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令null(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显示字符串功能 mov dx, offset string ; string的偏址 dx ; lea dx, string mov ah, 9 int 21h ; 显示一串字符null比例变址寻址方式 EA= *比例因子+(SI) (DI)8位 16位位移量例 MOV EAX,COUNT[ESI*4]适于处理元素大小为2、4、8字节的数组null9. 基址比例变址寻址方式 EA= 基址+ *比例因子 (SI) (DI)例 MOVE ECX,[EAX][EDX*8]适于处理元素大小为2、4、8字节的数组null10. 相对基址比例变址寻址方式 EA= 基址+ *比例因子+ (SI) (DI)8位 16位位移量例 MOVE ECX,TABLE[EAX][EDX*8]适于处理元素大小为2、4、8字节的二维数组null3.1.2 与转移地址有关的寻址方式 用来确定 转移指令 及 CALL指令 的转向地址。段内寻址 段间寻址段内直接寻址 段内间接寻址段间直接寻址 段间间接寻址以 转移(条件转移/无条件转移)指令 为例段内:转移指令与转向的目标指令在同一代码段中,(CS)不变。 段间:转移指令与转向的目标指令在两个代码段中, (CS)变化。null1. 段内直接寻址 转向的有效地址EA =用指令中提供的转向偏移地址取代IP 物理地址 = 16d  (CS) + (IP)新 例: …… JMP AGAIN (IP)当前 MOV BX, AX …… AGAIN: …… 例: JMP NEAR PTR NEXT 近转移 -32768 ~ +32767 JMP SHORT NEXT 短转移 -128 ~ +127 (IP)新(IP)新null2. 段内间接寻址 转向的有效地址EA是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到) 物理地址 = 16d  (CS) + EA 例: (BX)=1256H (SI)=528EH TABLE=20A2H (DS)=2000H (232F8H)=3280H (264E4H)=2450H JMP BX ; (IP)=1256H JMP TABLE[BX] JMP WORD PTR TABLE[BX] ; (IP)=3280H JMP [BX][SI] JMP WORD PTR [BX][SI] ; (IP)=2450H null3. 段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS和IP。 物理地址 = 16d  (CS) + (IP) 例: code1 segment …… jmp far ptr next …… code1 ends code2 segment …… next: …... …… code2 endsnull4. 段间间接寻址 用存储器中的两个相继字的内容取代CS和IP。 (存储单元的地址可用除立即数和寄存器以外的任何一种 数据寻址方式得到) 物理地址 = 16d  (CS) + (IP) 例: JMP DWORD PTR [INTERS+BX] null3.2 程序占有的空间和时间空间 80x86的机器指令是可变字节指令,即不同指令或不同寻址方式的机器指令长度不同时间 一条指令的执行时间是取指令、取操作数、执行时间及传送结果各个阶段所需时间的总和。 频率与时钟周期(节拍)的关系 频率(Mhz)= 1 时钟周期(T)null 判断程序质量的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 l 程序的正确性 l 程序的可读性 清晰 l 程序的执行时间 l 程序所占内存大小 效率
本文档为【汇编第3章(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_256172
暂无简介~
格式:ppt
大小:281KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-12-08
浏览量:20