计算机进行数据处理的时候要知道2个基本问题
- 要处理的数据放在哪
- 要处理的数据多长
刚开始定义了2个描述性符号备用
reg和sreg
reg 表示一个寄存器如 ax,bx,cx,dx,ah.......sp,bp,si,di
sreg表示一个段寄存器 如 ds,ss,cs,es
8.1 bx,si,di,bp
- 只有这4个寄存器可以放在[]中间和段地址ds或ss搭配进行内存单元寻址
- 这4个可以单独使用,也搭配使用,但只有4种组合
- [bp]的默认段地址是ss,其他3个是ds
8.2 数据放在什么地方
数据放在cpu的寄存器,内存单元,还有个什么端口不知道是个啥
8.3 数据存放位置的表达
前面说了数据放在哪里,但这些地方怎么表达才能让计算机看懂呢?
1 立即数
前面图的第3行
在执行前放在cpu的指令缓冲器里面
2 寄存器
数据放在寄存器里面,如上图的第2行
3 段地址(SA)和偏移地址(EA)组成的物理地址代表的内存单元
上图第一行
8.4 寻址方式
就是定位内存单元的方法把,上图
8.5 指令要处理的数据有多长
8086CPU可以处理2中长度的数据,byte和word,怎么知道要处理的数据是byte还是word(2个字节)
1 通过寄存器名指出要处理的数据长度
下面是字操作
mov ax,1
mov bx,ds:[1]
下面是字节操作
mov al,1
mov bh,ds:[1]
2 没有寄存器用x ptr 指明长度,X=byte or word
下面是字操作
mov word ptr ds:[1],1
inc word ptr ds:[1]
下面是字节操作
mov byte ptr ds:[1]
add byte ptr ds:[bx],2
8.6 这里是个寻址的练习
8.7 div 指令
1 除数 8 byte or 16byte
2 除数8位,被除数16位,默认放在ax,al放商,ah放余数
除数16位,被除数32位,被除数高16位放dx,低16位放ax,结果ax放商,dx放余数
8.8 dd指令
定义2个字,也就是4个字节
8.9 dup复制指令
用法如下图
最后是一个大实验题,做了之后有以下
1 db '1999',''2222'这样定义的不是2个字节,而是8个字节,每一个字符都是一个字节