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

引言

  • 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

  • 可以用作[bp]
  • 四个组合只能如下出现:bx和si、bx和di、bp和si、bp和di
  • 如果没有直接给出bp的段地址、段地址默认在ss

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

  • 指令执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口
    在这里插入图片描述

  • idata (立即数)

  • 寄存器

  • 段地址SA和偏移地址EA

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

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

8.4寻址方式

在这里插入图片描述

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

byte---- 8位
word—16位
高位地址指向高字节

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

操作符X ptr指明内存单元的长度

mov word ptr ds:[0],1 #所以ds:[0]存放的是0001H
mov byte ptr ds:[0],1 #所以ds:[0]存放的是01H

其他方法

  • push[1000H]就不用指明访问的是什么数据,因为push指令只进行字操作。

8.6寻址方式的综合应用

8.7div指令

  • 除法指令,除数在内存单元或者寄存器,被除数在AX或DX和AX中
除数被除数
8位16位(AX)
16位32位(DX+AX)

除数如果是8位,商在AL,余数在AH
除数如果是16位,商在AX,余数在DX

指令格式

div reg
div 内存单元
div byte ptr ds:[0]#(al)=(ax)/((ds)*16+0)的商,(ah)=(ax)/((ds)*16+0)的余数
div word ptr es:[0]#(ax)=[(dx)*100000H+(ax)]/((ds)*16+0)的商,(dx)=[(dx)*100000H+(ax)]/((ds)*16+0)的商,

8.8伪指令dd

data segment
	 db 1
	 dw 1
	 dd 1
	 data ends

在data段中定义了三个数据:
第一个数据为01H,在data:0处,占1个字节;
第二个数据为0001H,在data:1处,占1个字;
第三个数据为00000001H,data:3处,占2个字节;

8.9dup

db 重复的次数 dup(重复的字节型数据)

db 3 dup(0)#定义了3个字节,它们的值都是0,相当于db,0,0,0
db 3 dup(0,1,2)#定义了9个字节,它们是0、1、2、0、1、2、0、1、2
db 3 dup('abc','ABC')#定义18个字节,它们是'abcABCabcABCabcABC'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值