汇编笔记5

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

  • 处理的数据在什么地方
  • 要处理的数据有多长

bp寄存器

用法类似于bx,si,di

[bp] 表示的物理地址的段地址为段寄存器ss存的值

指令处理的数据长度标识

一般的寄存器,如ax,al,bh,是可以起到位数标识作用的

但对内存单元的操作就没有这种默认标识

所以需要指明要操作的内存长度

  • word ptr
  • byte ptr

例子:mov byte ptr [0],ff

1

div指令

格式:

1
2
div reg
div 内存单元 ;里面放的是的除数

除数:有8位和16位的

  • 8位:被除数就是16位的,默认存在ax;结果存在ax中,al为商,ah为余数
  • 16位:被除数就是32位的,默认存放在dx和ax中(高16位存在dx,低16位存在ax);结果的商存在ax中,余数存在dx中
    2

例子:计算100001/100 ; 因为要分别为dx和ax赋100001的高16位值和低16位值所以先化为16进制 100001=186A1H

1
2
3
4
mov dx,1
mov ax,86A1H ;(dx)*10000H+(ax) = 100001
mov bx,100
div bx

dd伪指令

dd就是用来定义 dword(double word)

dup

定义的时候,用来进行数据的重复

使用格式:

1
2
3
db 重复的次数 dup (重复的字节型数据)
dw 重复的次数 dup (重复的字型数据)
dd 重复的次数 dup (重复的双字型数据)

例子:db 3 dup ('abc','ABC') 定义了18个字节,它们是’abcABCabcABCabcABC’,相当于db 'abcABCabcABCabcABC'

Comments