汇编语言(王爽版)学习笔记 第八章 数据处理的两个基本问题(1)

引言

本章对前面的所有内容是具有总结性的。我们知道,计算机是进行数据处理、运算的机器,那么有两个基本问题就包含在其中:
(1)处理的数据在什么地方?
(2)要处理的数据有多长?

为了描述上的简洁,在以后的课程中,我们将使用两个描述性的符号reg和sreg。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

(1)在8086CPU中,只有这四个寄存器可以用在[…]中来进行内存单元的寻址。例如可以使用 [bx],但不能使用[ax]

在这里插入图片描述

(2)在"[…]"中,这四个寄存器可以单个出现,或者以下面四种组合之一出现:
1.bx和si
2.bx和di
3.bp和si
4.bp和di

在这里插入图片描述

(3)只要在[…]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中

在这里插入图片描述


8.2 机器指令处理的数据所在位置

绝大部分机器指令都是进行数据处理的指令,处理大致可以分为三类:读取、写入、运算
指令在执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口

在这里插入图片描述


8.3 汇编语言中数据位置的表达

汇编语言中用三个概念来表达数据的位置:

  1. 立即数(idata)
  2. 寄存器
  3. 段地址(SA)和偏移地址(EA)

立即数(idata)

对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为:立即数(idata),在汇编指令中直接给出。
在这里插入图片描述

寄存器

指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。
在这里插入图片描述

段地址(SA)和偏移地址(EA)

指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,SA在某个段寄存器中。

  • 存放段地址的寄存器可以是默认的
  • 存放段地址的寄存器也可以是显性给出的

默认存放段地址寄存器
在这里插入图片描述
在这里插入图片描述

显性给出存放段地址的寄存器
在这里插入图片描述


8.4 寻址方式

当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址方式。

在这里插入图片描述


8.5 指令要处理的数据有多长?

8086CPU的指令,可以处理两种尺寸的数据,byte(字节操作,8位)和word(字操作,16位)。所以在机器指令中要指明,指令进行的是字操作还是字节操作。

(1)通过寄存器名指明要处理的数据的尺寸
在这里插入图片描述
(2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。
在这里插入图片描述
(3)其他方法

有些指令默认了访问的是字单元还是字节单元,比如 push [1000H]默认了字单元,因为push指令只进行字操作。pop也是只进行字操作,因为sp每次变化都是以2为单位。

发布了116 篇原创文章 · 获赞 82 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43092232/article/details/105502239