汇编语言 | 数据处理的两个基本问题

描述性符合:reg(表示一个寄存器)和sreg(段寄存器)

reg集合:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di

sreg集合:ds、ss、cs、es

1、bx、si、di、和bp

在8086CPU中,只要这四个寄存器可以用在"[.....]"中进行内存单元的寻址。

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

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

2、机器指令处理数据的地址

机器指令关心指令执行的前一刻,它将处理数据所在的位置。在指令执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口。

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

  1. 立即数(idata):直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中直接给出。
  2. 寄存器:指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。
  3. 段地址(SA)和偏移地址(EA):数据在内存中,在汇编指令中可用[x]的格式给出SA,EA在某个段寄存器中。

4、寻址方式

定位内存单元的方法一般被称为寻址方式。

5、指令处理数据的长度

byte和word。

在机器指令中要指明,指令进行的操作时字操作还是字节操作:

  1. 通过寄存器名指明要处理的数据的尺寸。例如一般ax、bx等进行的是字操作;ah、bh等进行的是字节操作。
  2. 在没有寄存器名存在下,用操作符X ptr指明内存单元的长度,word ptr是一个字单元,byte是一个字节单元。
  3. 其他方法。列如push [idata]就不用指定,因为push指令只进行字操作。

7、div指令

div是除法指令,使用需注意:

  1. 除数:有8位和16位两种,在一个reg或内存单元中。
  2. 被除数:默认放在AX或DX和AX中,如果除数为8位数,被除数则为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX(存放高八位)和AX(存放低八位)中存放。
  3. 结果:若除数为8位,则AL存储商,AH存储余数;若除数为16位,AX存储商,DX存储余数。

8、伪指令dd

db和dw定义字节型数据和字型数据。dd定义dword(double word,双字)型数据。

9、dup

dup是一个操作符,同db、dw、dword等一样,是由编译器识别处理的符号。时和这三个数据定义伪指令配合使用,用来进行数据重复。

db 3 dup (0):定义了3个字节,值都是0,相当于db 0,0,0

使用格式:

db/dw/dword 重复的次数 dup (重复的字节型/字型/双字型数据)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值