当前位置: 代码迷 >> 综合 >> 王爽 《汇编语言》 读书笔记 八 数据处理的两个基本问题
  详细解决方案

王爽 《汇编语言》 读书笔记 八 数据处理的两个基本问题

热度:89   发布时间:2024-01-20 02:27:32.0

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

1)处理的数据栈什么地方?

2)要处理的数据有多长?

定义一个描述符号: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)只有这4个寄存器可以用在 [...]进行内存单元地址。

mov ax, [bp]

mov ax, [bp + si]

其他通用寄存器不可取地址

2)在[...]中它们部分可以两两组合,或者再加上idata

bx 和 si

bx 和 di

bp 和 di

bp 和 si


si+di     bx + bp 都是错误的

3)在[...]中使用BP 而没有给出段地址,默认段地址在ss中

mov ax, [bp]       (ax) = ((ss)*16 + (bp))

mov ax, [bp + idata]      (ax) = ((ss)*16 + (bp) + (idata))

mov ax, [bp + si]     (ax) = ((ss)*16 + (bp) + (si))

mov ax, [bp + si + idata]     (ax) = ((ss)*16 + (bp) + (si) + idata)


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

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


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

1) 立即数 idata  直接包含在机器指令中的数据(执行前中cpu的指令缓冲器中

例如

mov ax, 1

add bx, 2000h

or bx, 00010000b

mov al, 'a'


2) 寄存器

指令要处理的数据中寄存器中,在汇编指令中给出相应的寄存器名

例 mov ax, bx

  mov ds, ax

  push  bx

...


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

指令要处理段数据中内存中,用[...]给出

mov ax, [0]

mov ax, [di]

mov ax, [bx + 8]

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]<

  相关解决方案