汇编语言(王爽)第三章知识点及习题答案

本章将从内存访问的角度继续学习几个寄存器

3.1 内存中字的存储

CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。

内存中,一个字用两个地址连续的内存单元来存放,低位字节存放在低地址单元,高位字节存放在高地址单元。

3.2 DS和[address]

DS寄存器通常用来存放数据的段地址, [...]用来表示内存单元的偏移地址,例如访问10000H单元内容的代码如下:

mov bx, 1000H
mov ds, bx
mov al, [0]

上面三条指令将10000H中的数据读到al中。

3.3 字的传送

只要在mov指令中给出16位寄存器就可以进行16位数据的传送了。

3.4 mov、add、sub指令

(1)mov 指令的几种形式

mov 寄存器,数据

mov 寄存器, 寄存器

mov 寄存器, 内存单元

mov 内存单元, 寄存器

mov  段寄存器,寄存器

(2)add和sub 指令的几种形式

add 寄存器,数据

add 寄存器, 寄存器

add 寄存器, 内存单元

add 内存单元,寄存器

sub 寄存器,数据

sub 寄存器,寄存器

sub 寄存器,内存单元

add 内存单元,寄存器

3.5 数据段

将一段内存当作数据段,是我们编程时的一种编排

比如, 将123B0H~123B9H的内存单元定义为数据段,现在要累加这个数据段中的前3个单元中的数据,代码如下

mov ax, 123BH

mov ds, ax

mov al, 0

add al, [0]

add al, [1]

add al, [2]

3.6 栈

栈的特性:后进入这个空间的数据,最先出去LIFO(last in first out)

3.7 CPU提供的栈机制

8086CPU提供入栈和出栈指令, PUSH(入栈)和POP(出栈)

push ax 表示将寄存器ax中的数据送入栈中

pop ax 表示从栈顶取出数据送入ax

push ax执行的两步

(1) sp=sp-2

(2) 将ax中的数据送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶。

pop ax 执行的两步

(1) 将SS:SP指向的内存单元的数据送入ax中

(2) SP=SP+2

栈空状态指针

栈空, SS:SP指向栈空间最高地址的下一个单元。

3.8 栈顶越界的问题

8086CPU不保证我们对栈的操作不会越界,因此编程时我们要自己注意栈顶越界问题。

3.9 push、pop指令

push、pop指令的形式

push 寄存器

pop 寄存器

push 段寄存器

pop 段寄存器

push 内存单元

pop 内存单元

3.10 栈段

将一段内存当作栈,是我们编程时的一种安排

检测点3.1

(1)2662H, E626H,E626H,2662H,D6E6H,FD48H,2C14H,0000H,00E6H,0000H,0026H,000CH

检测点3.2

(1)

mov ax, 2000H

mov ss, ax

mov sp, 10H

(2)

mov bx, 1000H

mov ss, bx

mov sp, 0000H

谢谢大家, 多多关照! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值