第三章操作数的寻址方式(课堂PPT)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
存储器寻址(mem)
指令所要的操作数存放在内存中,在指令中给出存 储器的地址来指定操作数的方法称为存储器寻址方 式。 段地址 默认的段寄存器ds或ss。如果使用段超越前缀,那 么,段地址可存放在其它段寄存器。 EA 形成方式:分为5种 物理地址=段地址×16+有效地址(EA)
13
1、直接寻址
PA=(ds)×16+2000h=32000h (ax)=1234h (al)=34h
图示
15
1、直接寻址
例:指令:mov bx,es:[1234h],(es)=1000h, (11234h)=1234h。问该指令执行后,bx的值是什 么?
PA=(es)×16+1234h=11234h (bx)=1234h
PA=(ds)*16+(bx)=3000h*16+2000h=32000h (bx)=1234h
图示
20
3、寄存器相对寻址
操作数在存储器中,其有效地址是一个基址寄存 器(bx、bp)或变址寄存器(si、di)的内容和指令 中的8位/16位偏移量之和。
在不使用段超越前缀的情 况下,有下列规定: 若有效地址用si、di和bx 等之一来指定,则其缺省 的段寄存器为ds; 若有效地址用bp来指定, 则其缺省的段寄存器为 ss(即:堆栈段)。
7
立即数寻址(imm)
要点: 目的操作数不能使用立即数寻址。 例:mov 1234h,ax 立即数可以是8、16位数。在双操作数指令, 两个操作数的位数、数据类型必须相同。 例:mov al,1234h mov al,bx mov bx,al mov ax,70h mov ax,-70h
8
第二节 操作数的寻址方式
2
第一节 汇编指令格式
2、单操作数指令
指令助记符 操作数
只有把数据先送入隐含的寄存器中、才能执行此操
作的指令。
例:mul cx
;(ax) ×(cx)→(dx,ax)
3、无操作数指令 指令助记符
例:clc ;0→cf stc ;1→cf
3
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
指令所要的操作数存放在内存中,在指令中直接给 出该操作数的有效地址,这种寻址方式为直接寻址 方式。 执行过程 物理地址=(段寄存器)×16+有效地址,其中段地址 在默认的ds,如果使用段超越前缀,那么,段地址 可在其它段寄存器。
14
1、直接寻址
例:假设有指令:mov ax, [2000h],在执行时, (ds)=3000h,内存单元32000h的值为1234h。问该 指令执行后,ax的值是什么?指令变为:mov al, [2000h], al的值是什么?
10
寄存器寻址(reg)
例:Baidu Nhomakorabea
add varw,ax add varb,bh
;其中varw,varb是字、字节内存变量。
add bh,78h
add ax,1234h
mov ax,bx
mov bh,al
要点:在双操作数指令,源操作数和目的操作数都 可以使用寄存器寻址。
11
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
第三章 操作数的寻址方式
1
第一节 汇编指令格式
汇编指令的格式: 指令助记符[操作数1[,操作数2]][;注释] 根据操作数的个数分,有以下三种格式:
1、双操作数指令 指令助记符 目的操作数(dst),源操作数(src) 运算之后,结果保存在目的操作数。
例:mov ax,1234h mov bx,5678h add ax,bx
4
概述
寻址方式:在指令中,指定操作数或操作数的存放 位置的方法称为寻址方式。
操作数出现在指令中——立即数寻址 操作数保存在寄存器中——寄存器寻址 操作数保存在内存——存储器寻址 操作数保存在i/o端口——i/o寻址 (见第八章)
5
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
例:mov ax,[bx] ;(ax)←((ds)×16+(bx)) mov ax,[bp] ;(ax)←((ss)×16+(bp)) mov ax, es:[bp] ;(ax)←((es)×16+(bp))
19
2、寄存器间接寻址
例:假设有指令:mov ax, [bx],在执行时, (ds)=3000h,(bx)=2000h,存储单元32000h的内容是 1234h。问执行指令后,ax的值是什么?
16
1、直接寻址
要点:
地址也常用内存变量名来表示,书写格式:v_1或 [v_1]。
如mov ax,varw
mov ax,[varw]
与立即数寻址的区别
在指令中,直接寻址给出操作数的EA,立 即数寻址给出操作数。
用数字书写时,格式不一样。
mov ax,1234h
mov ax,[1234]
17
2、寄存器间接寻址
操作数在存储器中,操作数的有效地址用si、di、 bx和bp等四个寄存器之一来指定,称这种寻址方式 为寄存器间接寻址方式。
18
2、寄存器间接寻址
在不使用段超越前缀的情况下,有下列规定: 若有效地址用si、di和bx等之一来指定,则其缺省的段寄存 器为ds; 若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆 栈段)。
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
9
寄存器寻址(reg)
指令所要的操作数已存储在某寄存器中,或把目标 操作数存入寄存器。把在指令中指出所使用寄存器 (寄存器符号)的寻址方式称为寄存器寻址方式。
执行过程
指令中可以引用的寄存器及其符号如下: 8位寄存器有:ah、al、bh、bl、ch、cl、 dh和dl。 16位寄存器有:ax、bx、cx、dx、si、di、 sp、bp、ip和段寄存器。
6
立即数寻址(imm)
操作数出现在指令中,是指令的一个组成部分。这 样的操作数叫做立即数.以这种指定操作数的方式 就叫做立即数寻址。 执行过程
例:
mov ah, 80h add ax, 1234h mov b1, 12h mov w1, 3456h add d1, 32123456h
其中:b1、w1和d1分别是字节、字和双字内存变量。
存储器寻址(mem)
指令所要的操作数存放在内存中,在指令中给出存 储器的地址来指定操作数的方法称为存储器寻址方 式。 段地址 默认的段寄存器ds或ss。如果使用段超越前缀,那 么,段地址可存放在其它段寄存器。 EA 形成方式:分为5种 物理地址=段地址×16+有效地址(EA)
13
1、直接寻址
PA=(ds)×16+2000h=32000h (ax)=1234h (al)=34h
图示
15
1、直接寻址
例:指令:mov bx,es:[1234h],(es)=1000h, (11234h)=1234h。问该指令执行后,bx的值是什 么?
PA=(es)×16+1234h=11234h (bx)=1234h
PA=(ds)*16+(bx)=3000h*16+2000h=32000h (bx)=1234h
图示
20
3、寄存器相对寻址
操作数在存储器中,其有效地址是一个基址寄存 器(bx、bp)或变址寄存器(si、di)的内容和指令 中的8位/16位偏移量之和。
在不使用段超越前缀的情 况下,有下列规定: 若有效地址用si、di和bx 等之一来指定,则其缺省 的段寄存器为ds; 若有效地址用bp来指定, 则其缺省的段寄存器为 ss(即:堆栈段)。
7
立即数寻址(imm)
要点: 目的操作数不能使用立即数寻址。 例:mov 1234h,ax 立即数可以是8、16位数。在双操作数指令, 两个操作数的位数、数据类型必须相同。 例:mov al,1234h mov al,bx mov bx,al mov ax,70h mov ax,-70h
8
第二节 操作数的寻址方式
2
第一节 汇编指令格式
2、单操作数指令
指令助记符 操作数
只有把数据先送入隐含的寄存器中、才能执行此操
作的指令。
例:mul cx
;(ax) ×(cx)→(dx,ax)
3、无操作数指令 指令助记符
例:clc ;0→cf stc ;1→cf
3
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
指令所要的操作数存放在内存中,在指令中直接给 出该操作数的有效地址,这种寻址方式为直接寻址 方式。 执行过程 物理地址=(段寄存器)×16+有效地址,其中段地址 在默认的ds,如果使用段超越前缀,那么,段地址 可在其它段寄存器。
14
1、直接寻址
例:假设有指令:mov ax, [2000h],在执行时, (ds)=3000h,内存单元32000h的值为1234h。问该 指令执行后,ax的值是什么?指令变为:mov al, [2000h], al的值是什么?
10
寄存器寻址(reg)
例:Baidu Nhomakorabea
add varw,ax add varb,bh
;其中varw,varb是字、字节内存变量。
add bh,78h
add ax,1234h
mov ax,bx
mov bh,al
要点:在双操作数指令,源操作数和目的操作数都 可以使用寄存器寻址。
11
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
第三章 操作数的寻址方式
1
第一节 汇编指令格式
汇编指令的格式: 指令助记符[操作数1[,操作数2]][;注释] 根据操作数的个数分,有以下三种格式:
1、双操作数指令 指令助记符 目的操作数(dst),源操作数(src) 运算之后,结果保存在目的操作数。
例:mov ax,1234h mov bx,5678h add ax,bx
4
概述
寻址方式:在指令中,指定操作数或操作数的存放 位置的方法称为寻址方式。
操作数出现在指令中——立即数寻址 操作数保存在寄存器中——寄存器寻址 操作数保存在内存——存储器寻址 操作数保存在i/o端口——i/o寻址 (见第八章)
5
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
例:mov ax,[bx] ;(ax)←((ds)×16+(bx)) mov ax,[bp] ;(ax)←((ss)×16+(bp)) mov ax, es:[bp] ;(ax)←((es)×16+(bp))
19
2、寄存器间接寻址
例:假设有指令:mov ax, [bx],在执行时, (ds)=3000h,(bx)=2000h,存储单元32000h的内容是 1234h。问执行指令后,ax的值是什么?
16
1、直接寻址
要点:
地址也常用内存变量名来表示,书写格式:v_1或 [v_1]。
如mov ax,varw
mov ax,[varw]
与立即数寻址的区别
在指令中,直接寻址给出操作数的EA,立 即数寻址给出操作数。
用数字书写时,格式不一样。
mov ax,1234h
mov ax,[1234]
17
2、寄存器间接寻址
操作数在存储器中,操作数的有效地址用si、di、 bx和bp等四个寄存器之一来指定,称这种寻址方式 为寄存器间接寻址方式。
18
2、寄存器间接寻址
在不使用段超越前缀的情况下,有下列规定: 若有效地址用si、di和bx等之一来指定,则其缺省的段寄存 器为ds; 若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆 栈段)。
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
9
寄存器寻址(reg)
指令所要的操作数已存储在某寄存器中,或把目标 操作数存入寄存器。把在指令中指出所使用寄存器 (寄存器符号)的寻址方式称为寄存器寻址方式。
执行过程
指令中可以引用的寄存器及其符号如下: 8位寄存器有:ah、al、bh、bl、ch、cl、 dh和dl。 16位寄存器有:ax、bx、cx、dx、si、di、 sp、bp、ip和段寄存器。
6
立即数寻址(imm)
操作数出现在指令中,是指令的一个组成部分。这 样的操作数叫做立即数.以这种指定操作数的方式 就叫做立即数寻址。 执行过程
例:
mov ah, 80h add ax, 1234h mov b1, 12h mov w1, 3456h add d1, 32123456h
其中:b1、w1和d1分别是字节、字和双字内存变量。