第三章8086微处理器及其寻址方式
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寻址方式
与数据有关的寻址方式:以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]
直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 存储器寻址
DI
---
进制之间的转换
二进制→八进制、十进制、十六进制
二进制B→八进制Q(23=8)
11 001 100B=314Q 二进制B→十进制D 11001100B=0×20+0×21×1×22+1×23×0×24+0×25×1×26+1×27 =204D 二进制B→十六进制H(24=16) 1100 1100B=CCH
两个操作数,也有个别指令有3个甚至4个操作数。
寻址方式
如何寻址一个操作数对程序设计很重要。
指令的格式:
操作码
操作数1,操作数2 ;注释
操作数1称为目的操作数,它不仅可以作为指令操作的一个 对象,还可以用来存放指令操作的结果。
操作数2称为源操作数。
分号后的内容是对指令的解释。
传送指令MOV
MOV
段寄存器的使用规定
访问存储器的方式
取指令 堆栈操作 一般数据访问
默认的 段寄存器 CS SS DS
可跨越的段寄 存器 无 无 CS ES SS
偏移地址
IP SP 有效地址EA
BP作为基址的寻址
串操作的源操作数
SS
DS
CS
CS
DS
ES
SS
SS
BP
SI
串操作的目的操作数
---
ES
---
无wk.baidu.com
---
立即数寻址方式
MOV AL,05H
;AL←05H
MOV AX,0102H
MOV AL,'A' 只能用于源操作数
;AX←0102H
;AL←A MOV 40H,AL ×
源操作数和目的操作数类型要一致 MOV AH,2036H ×
寄存器寻址方式---操作数在指定的寄存器中
操作数存放在CPU的内部寄存器reg中,可以是:
DEBUG.EXE 或TD.EXE
汇编语言的过程
EDIT
.ASM
MASM
.OBJ
LINK
.EXE
.COM
EXE2BIN
MASM LINK 文件名
调试程序DEBUG
DEBUG是常用的汇编语言级调试工具,为汇编语言程序员提供了分 析指令、跟踪程序的有效手段。 常用的命令: -A汇编 -U反汇编
8位寄存器
AH 、AL、 BH、 BL、 CH、 CL、 DH、 DL
16位寄存器
AX、 BX、 CX、 DX、 SI 、DI 、BP、 SP
4个段寄存器
CS 、DS 、SS 、ES
寄存器寻址方式
MOV AX,BX
;AX←BX
MOV AL,BH
MOV AX,3064H
;AL←BH
有效地址在指令中直接给出
默认的短地址在
MOV MOV
DS段寄存器,可以使用段超越前缀改变。
;AX←DS:[2000H] ;AX←ES:[2000H]
AX,[2000H] AX,ES:[2000H]
注意:隐含的段为数据段DS 操作数地址可由变量(符号地址)表示,但要注意变量的属性。
.ASM
EDIT、NOTPAD、UltraEdit ASCII码形式存盘
.OBJ Microsoft公司的MASM.exe Ver5.0
Borland 公司的TASM.exe Ver2.0
汇编语言的过程
.OBJ 文件或多个.OBJ 文件连接(再定位)形成可执行 文件,即.EXE 或.COM Link.EXE 或TLink.EXE
BX 、SI 、DI寄存器默认的寄存器是DS,BP寄存器默认的段 寄存器是SS,可以使用段超越前缀。
指令格式:MOV AX,[BX][DI]
或MOVAX,[BX+DI] 或MOV AX,ES:[BX][SI]
;AX←DS:[BX+DI] ;AX←DS:[BX+DI] ;AX←ES:[BX+SI]
MOV AX,[BX][BP]× MOV AX,[SI][DI]×
(AX)=3050H
寄存器间接寻址方式
有效地址存放在基址寄存器BX/BP或变址寄存器SI、DI中。 默认的段地址在DS段寄存器,可使用段超越前缀改变。 MOV
AX,[SI] PA=16D×(DS)+(BX) AX,[BX] PA=16D×(DS)+(BX)
;AX←DS:[SI]
;AX←DS:[BX] ;AX←ES:[BX] ;AX←SS:[BP]
相对基址变址寻址方式
( BX ) ( SI ) 8位 有效地址 位移量 ( BP) ( DI ) 16位
MOV AX,MASK[BX][SI]
MOV AX,MASK[BX+SI]
或 或
MOV AX,[MASK+BX+SI]
AX,[BX+SI+06H] ;AX←DS:[BX+SI+06H]
8086设计了多种存储器寻址方式
1、直接寻址
2、寄存器间接寻址 3、寄存器相对寻址 4、基址变址寻址 5、相对基址变址寻址
MOV AX,[2000H]
MOV AX,[BX]
MOV AX,COUNT[SI]
MOV AX,[BP][DI] MOV AX,MASK[BX][SI]
直接寻址方式
第三章 8086微处理器及其寻址方 式
汇编语言的过程
用汇编语言编写的程序不能由机器直接运行,而必须经过
汇编程序翻译成机器语言程序。
----汇编:汇编语言源程序由ASM.EXE生成目标代码(.obj,可能有多 个)。
----链接:由LINK.exe将.obj连接成可执行程序。
汇编语言的过程
立即数寻址方式---操作数在指令中给出
操作数就在指令中直接给出,而指令本身在存储器的代码
段中存放。
当取指令时操作数作为指令机器字节的一部分去出来存入
CPU的指令队列中。执行该指令时,直接得到该数。
这种操作数称为立即数
它可以是8位数值(00H~FFH)
也可以是16位数值(0000H~FFFFH)
-T单步执行
-D数据显示
-G断点执行
-R寄存器
指令的组成
指令是由操作码和操作数两部分组成。
操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等 操作,它是指令中不可缺少的组成部分。 操作数是指令执行的参与者,即各种操作的对象。 注意:有些指令不需要操作数,通常的指令都有一个或
例:编写一段显示字符串STRING的程序
数据段已经给出,分别用各种寻址输出。
DATA SEGMENT STRING DB COUNT DW 8 'HELLO',0DH,0AH,'$'
显示字符串STRING的程序 (寄存器间接寻址) DATA ENDS MOV CX,COUNT MOV BX,OFFSET STRING 显示字符串STRING的程 序(DOS显示字符串功能) L:MOV DL,[BX] MOV AH,02H MOV DL,OFFSET STRING INT 21H MOV AH,09H INC BX INT 21H LOOP L
;AX←3064H
注意:
字节寄存器只有AH
AL BH BL CH CL DH DL
MOV AH,BX ×
源操作数和目的操作数类型要一致
CS不能用MOV指令改变 MOV CS,AX ×
存储器寻址方式
指令中给出操作数的主存地址信息(偏移地址,称之为有
效地址EA),而段地址在默认的或用段超越前缀指定的 段寄存器中。
显示字符串STRING的程序 (直接寻址) MOV DL,STRING MOV AH,02H INT 21H
MOV DL,STRING+1 MOV AH,02H INT 21H
例:编写一段显示字符串STRING的程序
显示字符串STRING的程 序(寄存器相对寻址) MOV CX,COUNT MOV SI,0 L:MOV DL,STRING[SI] MOV AH,02H INT 21H INC SI LOOP L 显示字符串STRING的程序 (基址变址寻址) MOV CX,COUNT MOV BX,OFFSET STRING MOV SI,0 L:MOV DL,[BX][SI] MOV AH,02H INT 21H INC SI LOOP L
指令格式:MOV AX,COUNT[SI]或 MOV AX,[COUNT+SI] 假设(DS)=3000H(SI)=2000H,COUNT=3000H, 则PA=35000H 假设(35000H)=1234H,那么(AX)=1234H
基址变址寻址方式
( BX ) ( SI ) 有效地址 ( BP) ( DI )
MOV
目的操作数,源操作数
;AL←05H
MOV指令的功能是将源操作数传送至目的操作数,如:
MOV AL,05H
MOV BX,AX
MOV AX,[SI] MOV AX,[BP+06H] MOV AX,[BX+SI]
;BX←AX
;AX←DS:[SI] ;AX←SS:[BP+06H] ;AX←DS:[BX+SI]
VALUE DB 10
MOV AH,VALUE MOV AX,VALUE×
MOV AX,WORD PTR VALUE √
直接寻址方式---有效地址EA由指令直接给出
例:MOV
AX,[2000H]
EA=2000H,假设(DS)=3000H,那么PA=32000H AH AL
30
50
3200 50 30
MOV
MOV
AX,ES:[BX] PA=16D×(ES)+(BX)
AX,[BP] PA=16D×(SS)+(BP)
MOV
不允许使用AX、CX、DX存放EA
寄存器相对寻址方式
( BX ) ( BP) 8位 有效地址 位移量 16位 ( SI ) ( DI ) BX 、SI 、DI寄存器默认的寄存器是DS,BP寄存器默认 的段寄存器是SS,可以使用段超越前缀。
进制之间的转换(续)
十进制→二进制、八进制、十六进制
十进制D→二进制B
123.625整数部分:123不断除以2,得到余数,逆序写出的1111011B 小数部分:0.625不断乘以2,0.625×2=1.25取整1(进位1) (1.25-1)×2=0.5取整0 0.5×2=1取整1 0.625D=0.101B 123.625D=1111011.101B 十进制D→八进制Q 十进制D→十六进制H 123.625D=173.5Q 123.625D=7B.AH