汇编语言(王爽) 第8章数据处理的2个基本问题

计算机进行数据处理的时候要知道2个基本问题

  1. 要处理的数据放在哪
  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

  1. 只有这4个寄存器可以放在[]中间和段地址ds或ss搭配进行内存单元寻址
  2. 这4个可以单独使用,也搭配使用,但只有4种组合
  3. [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个字节,每一个字符都是一个字节

 

posted @ 2016-04-11 21:10  Debugor  阅读(256)  评论(0编辑  收藏  举报