第八章 数据处理的两个基本问题

第八章 数据处理的两个基本问题

8.1 bx、si、di和bp

在8086CPU中,只有这4个寄存器可以用在“[…]”中来进行内存单元的寻址。

在[ ]中,这4个寄存器可以单个出现,或只能以4种组合出现:bx和si、bx和dibp和si、bp和di

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

8.2 机器指令处理的数据在什么地方

数据处理大致可分为3类:读取、写入、运算

在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口

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

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

  1. 立即数
  2. 寄存器
  3. 段地址

1.立即数

mov ax, 1                 ;对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中)
add bx, 2000h             ;在汇编语言中称为:立即数(idata)
or bx, 00010000b
mov al, 'a'

2.寄存数

mov ax, bx     ;指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。
mov ds, ax 
push bx 
mov ds:[0], bx 
push ds 
mov ss, ax
mov sp, ax

3.段地址

;指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,SA在某个段寄存器中。
mov ax, [0]
mov ax, [di]
mov ax, [bx+8]
mov ax, [bx+si]
mov ax, [bx+si+8]   ;以上段地址默认在ds中

mov ax, [bp]
mov ax, [bp+8]
mov ax, [bp+si]
mov ax, [bp+si+8]   ;以上段地址默认在ss中

mov ax, ds:[bp]
mov ax, es:[bx]
mov ax, ss:[bx+si]
mov ax, cs:[bx+si+8] ;显式给出存放段地址的寄存器

8.4 寻址方式

下面是8086CPU中常用的寻址方式:

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

8086CPU的指令,可以处理两种尺寸的数据,byte和word

  1. 通过寄存器名指明要处理的数据的尺寸。

    例如: mov al, ds:[0] 寄存器al指明了数据为1字节

  2. 在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。

    例如:mov byte ptr ds:[0], 1 byte ptr 指明了指令访问的内存单元是一个字节单元

  3. 有些指令默认了访问的是字单元还是字节单元

    例如,push [1000H],push 指令只进行字操作。

8.6 div 指令

div是除法指令

  1. 除数:有8位和16位两种,在一个寄存器内存单元中。

  2. 被除数:默认放在AX或DX和AX中,

    如果除数为8位,被除数则为16位,默认在AX中存放;

    如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。

  3. 结果:

    如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;

    如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。

;利用除法指令计算100001/100。
;100001D = 186A1H
mov dx, 1
mov ax, 86A1H ;(dx)*10000H+(ax)=100001
mov bx, 100
div bx

;利用除法指令计算1001/100
mov ax, 1001
mov bl, 100
div b1

8.8 伪指令dd

db和dw定义字节型数据和字型数据。

dd是用来定义dword(double word,双字)型数据的伪指令

8.9 dup

dup在汇编语言中同db、dw、dd等一样,也是由编译器识别处理的符号。
b1


## 8.8 伪指令dd

db和dw定义字节型数据和字型数据。

dd是用来定义dword(double word,双字)型数据的伪指令

## 8.9 dup

dup在汇编语言中同db、dw、dd等一样,也是由编译器识别处理的符号。
它和db、dw、dd等数据定义伪指令配合使用,用来进行数据的重复
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值