[汇编学习笔记][第八章数据处理的两个基本问题]
2016-04-21 00:10
281 查看
第八章 数据处理的两个基本问题
本章对前面具有总结性。主要解决以下两个问题处理的数据在什么地方
要处理的数据有多长
定义描述符号reg和sreg
reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;
sreg:ds,ss,cs,es。
8.1 bx,si,di和bp
在8086CPU中,只有这4个寄存器可以用在"[..]"当中来进行内存单元的寻址。
4种寄存器可以单独出现,否则只能以这四种组合出现
bx和si
bx和di
bp和si
bp和di
重点:只要在
[..]中使用bp,而指令中没有显性地给出地址,段地址默认为ss中
不太懂这三个规则的由来
8.2 机器指令处理的数据在什么地方
在机器指令这一层来说,不关心数据的值,关心指令执行前一刻,他将要处理的数据的位置。CPU内部
内存
端口
8.3 汇编语言中数据位置的表达
立即数(idata)执行前在CPU的指令缓冲器中
寄存器
在CPU内寄存器中
段地址(SA)和偏移地址(EA)
在内存或端口
8.4 寻址方式
8.4.1 直接寻址
形式[idata]
含义 普通变量
8.4.2 寄存器间接寻址
形式[bx],
[si],
[di],
[bp]
含义
数组
8.4.3 寄存器相对寻址
形式[bx+idata]….
idata[bx]….
[bx].idata
含义
二维数组
[bx][idata]
一维数组
idata[bx]
结构体
[bx].idata
8.4.4**基址变址寻址**
形式[bx+si],
[bx+di],
[bp+si],
[bp+di]
含义
二维数组
[bx][si]
8.4.5 相对基址变址
形式[bx+si+idata],
[bx].idata[si],
idata[bx][si]
含义
普通数组
[bx+si+idata]
结构中的数组
[bx].idata[si]
二维数组
idata[bx][si]
8.5 指令要处理的数据有多长
8086CPU的指令,可以处理两种尺寸的数据,byte和
word。在机器指令中要指明处理那种数据。
汇编语言有以下方法处理。
通过寄存器名指明要处理的数据的尺寸。
用操作符
X ptr指明长度,X可以是
word/
byte
其他方法,
push只进行字操作
Tips:
注意
inc byte ptr和
inc word prt的区别
答:在不进位的时候,两者没有区别,进位的时候,byte会抛弃进位。
8.6 寻址方式的综合应用
mov si,0 mov byte ptr [bx].10h[si],'V' inc si mov byte ptr [bx].10h[si],'A' inc si mov byte ptr [bx].10h[si],'X'
8.7 div指令
除数:有8位,和16位两种。根据8.5判定。被除数:
8位:默认放在AX中
16位:默认放在DX和AX中,DX存高16位,AX存低16位
结果
8位:AL存储商,AH存储余数
16位:AX存储商,DX存储余数
格式如下
div reg div byte/word ptr 内存单元
至于溢出的问题
会提示 divide error - overflow.
至于怎么解决,要看后面的分析
8.8 伪指令dd
dd=Double worD,双字型数据,32位
data segment db 1 dw 1 dd 1 data ends 实质: db=01H dw=0001H dd=00000001H
8.9 dub
dub是一个操作符,伪指令用于进行数据的重复语法
db/dw/dd 重复次数 (重复的db/dw/dd数据)
相关文章推荐
- Android程序 依赖库引用Gson 报java.lang.NoClassDefFoundError: com/google/gson/Gson 解决方法
- 【C++】智能指针的原始写法、scoped写法、shared写法
- Struts2中常用的.properties文件、xml文件的命名方式、存放位置以及详解。
- 图像边缘检测——Sobel算子
- 第6章 供给、需求与政府政策
- OpenCV Mat的实现
- ice maven
- linux 进程和线程的区别
- getopt
- [Unity通信]快速接入sdk
- light oj1265 Island of Survivalm
- poj 2709 Painter
- vs2013 error c4996: 'fopen': This function or varia
- Linux usual cmd
- (26)改变自动扫描的包【从零开始学Spring Boot】
- svn的很少用到的功能
- 如何在 Linux 中安装 Rust 编程语言
- 为什么 Linux 用户应该试一试 Rust
- 一款免费且安全的在线 PDF 转换软件
- Android开发使用Drawable绘制圆角与圆形图案功能示例