1 内存寻址方式-导学
- 处理字符问题
- [bx+idata]方式寻址
- SI和DI寄存器
- [bx+si]和[bx+di]方式寻址
- [bx+si+idata]和[bx+di+idata]方式寻址
- 不同的寻址方式的灵活应用
- 不同寻址方式演示
- 用于内存寻址的寄存器
- 在哪里?有多长?
- 寻址方式的综合应用
- 用div指令实现触发
- 用dup设置内存空间
2 处理字符问题
2.1 处理字符问题
- 2.1.1 汇编程序中,用’…'的方式指数据是以字符的形式给出的,编译器将他们转化为相应的ASCII码
注意:
小写字母的ASCII码值比大写字母的ASCII码值大20H。
大写 + 20H --> 小写
小写 - 20H -> 大写
逻辑与指令:and dest,src (将目标dest和源src的书做与操作,结果放在dest目标中)
3 [bx+idata]方式寻址
3.1 [bx+idata]的含义
[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)
mov ax,[bx+200]/mov ax, [200+bx]的含义
数学化的描述为:(ax) = ((ds)*16+200+(bx))
指令mov = ax, [bx+200]的其他写法(常用)
mov ax, [200+bx]
mov ax, 200[bx]
mov ax, [bx].200
4 SI和DI寄存器
4.1 CPU内部的寄存器
通用寄存器:AX,BX,CX,DX
变址寄存器:SI,DI
指针寄存器:SP,BP
指令指针寄存器:IP
段寄存器:CS,SS,DS,ES
标志寄存器:PSW
4.2 SI和DI常执行与地址有关的操作
- 4.2.1 SI和DI是8086CPU中和BX功能相近的寄存器
BX:通用寄存器,在计算存储器地址时,常作为基地址寄存器用
SI:source index,源变址寄存器
DI:destination index,目标变址寄存器
区别:
SI和DI不能分成两个8位寄存器来使用。
5 [bx+si]和[bx+di]方式寻址
5.1 [bx+si]和[bx+di]方式指定地址
- 5.1.1 [bx+si]表示一个内存单元
偏移地址为(bx)+(si) (即bx中的数值加上si中的数值)。 - 5.1.2 指令mov ax,[bx+si]的含义
1.将一个内存单元的内容送入ax
2.这个内存单元的长度为2字节(字单元),存放一个字
3.偏移地址为bx中的数值加上si中的数值
4.段地址在ds中 - 5.1.3 指令mov ax,[bx+si]的数学化描述
(ax)=((ds)*16+(bx)+(si)) - 5.1.4 mov ax,[bx+si]的其他写法
mov ax,[bx][si]
6 [bx+si+idata]和[bx+di+idata]
6.1 [bx+si+idata]和[bx+di+idata]方式指定地址
- 6.1.1 [bx+si+idata]表示一个内存单元
偏移地址为(bx)+(si)+idata,即bx中的数值加上si中的数值再加上idata - 6.1.2 指令mov ax,[bx+si+idata]的含义
1.将一个内存单元的内容送入ax
2.这个内存单元的长度为2字节(字单元),存放一个字
3.偏移地址为bx中的数值加上si中的数值再加上idata
4.段地址在ds中 - 6.1.3 数学化的描述
(ax)=((ds)*16+(bx)+(si)+idata) - 6.1.4 mov ax,[bx+si+idata]的其他写法
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
mov ax,[bx][si] # 常数是0的写法
7 不同的寻址方式的灵活应用
7.1 对内存的寻址方式
8 不同寻址方式演示
8.1 内存的寻址方式
9 用于内存寻址的寄存器
9.1 哪些寄存器用于寻址?
通用寄存器:AX,BX,CX,DX
变址寄存器:SI,DI
指针寄存器:SP,BP
指令指针寄存器:IP
段寄存器:CS,SS,DS,ES
标志寄存器:PSW
正确的指令
mov ax,[bx]
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bp]
mov ax,[bp+si]
mov ax,[bp+di]
# 只有bx、bp、si、di可以用在[...]对内存单元寻址
错误的指令
mov ax,[cx]
mov ax,[ax]
mov ax,[dx]
mov ax,[ds]
# bx以外的通用寄存器、段寄存器不可以用在[...]中
错误的指令
mov ax,[bx+bp]
mov ax,[si+di]
bx、bp区别:
bx默认指ds段;
bp默认指ss段;
10 在哪里?有多长?
10.2 指令要处理的数据有多长
11 寻址方式的综合应用
12 用div指令实现除法
12.1 div指令
div是除法指令,使用div作除法的时候
被除数:(默认),放在AX或DX和AX中
除数:8位或16位,在寄存器或内存单元中
结果:。。。
div指令格式
div 寄存器
div 内存单元
被除数 | AX | DX和AX |
---|
除数 | 8位内存或寄存器 | 16位内存或寄存器 |
商 | AL | AX |
余数 | AH | DX |
12.2 在内存单元中实施除法
data segment
dd 100001 【0】
dw 100 【4】
dw 0 【6】
data ends
mov ax,data
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
mov word ptr ds:[4]
mov ds:[6],ax
13 用dup设置内存空间
13.1 dup功能和用法
- 13.1.1 功能
dup和db、dw、dd等数据定义伪指令配合使用,用来进行数据的重复
把括号中的数据重复多次
dup的使用格式
db重复的次数 dup (重复的字节型数据)
dw重复的次数 dup (重复的字型数据)
dd重复的次数 dup (重复的双字数据)
- 13.1.2 dup用途