汇编语言-第6章-检测

1、在第5章[BX]和loop指令中,降到要使用一段安全的空间。哪里是安全的呢?
0:200~0:2FF是相对安全的。

2、0:200~0:2FF这段空间的容量有多少个字节?
0-FF
FF=255
0-255,有256个字节。

3、如果我们需要的空间超过256个字节怎么办?
通过操作系统取得的空间都是安全的,因为它在分配的时候,不会于(其他程序和系统自己的空间)起冲突。

4、在系统允许的情况下,程序可以取得多少空间?
任意容量的空间。

5、程序取得所需空间的方法有几种?
两种,
一是,加载程序的时为程序分配的空间
二是,执行程序的过程中向系统申请。(课程不讨论)

6、若要一个程序在被加载的时候,取得所需的空间,应该怎么做?
通过在源程序中定义段,来进行内存空间的获取。

7、从程序规划的角度,谈定义段问题?
程序,数据、指令。
所以一般定义不同的段来存放他们。
需要处理数据,使用栈空间。
还需要指令。

8、对于使用多个段的问题,下面我们将以这样的顺序来深入地讨论多个段的问题:
(1) 在一个段中存放数据、代码、栈,我们先来体会一 下不使用多个段时的情况;
(2)将数据、代码、栈放入不同的段中。

放在一个段中。
放在不同段中。

9、考虑这样一个问题,编程计算以下8个数据的和,结果存在ax寄存器中:
0123h、0456h、 0789h、 0abch、 0defh、 0fedh、 0cbah、 0987h

以前我们用什么方法?
一个一个加到ax寄存器中。

现在我们想用什么方法?
循环。

10、要用循环则首先要干嘛?
将数据存储在一组地址连续的内存单元中。

11、如何将他们存储在(一组地址连续的内存单元中)中呢?
系统会自动为它们分配,我们不能决定在哪段空间。

12、过程是怎么样的?
数据会被编译、连接程序作为程序的一部分写到可执行文件中。
可执行文件中的程序 被加载入内存时,
数据也会同时被加载入内存中。
数据也就获得了存储空间。

13、dw什么意思?
定义字型数据。
define word

14、在这里插入图片描述
这个8个数据在哪里?
段地址在CS处,偏移地址呢?
因为dw定义数据在代码段的开始,所以偏移地址为0,
他们的偏移地址就是
CS:0。2。4。6。8。A。C。E

15、DS是0B2D,程序从哪里开始?
0B3D,只说过,有需要加10
在这里插入图片描述
16、
在这里插入图片描述
在这里插入图片描述
0B3D:0010 - 0B3D:0000 = 10 =16个字节
0B3D:0000 - 0B3D:0010 存放的是dw定义的数据。
从0B3D:0010开始,才是汇编指令对应的机器码。
在这里插入图片描述
17、所以,如何执行程序中的指令呢?
用debug加载后,将IP设置为10h,
使得CS:IP指向程序中第一条指令,
然后用t、p、g

18、程序经过编译、连接成可执行文件后,为了让程序的入口处是我们希望执行的指令。
我们可以指明程序的入口处。
在这里插入图片描述
start 指明了,mov 是程序第一条指令。

19、在这里插入图片描述

20、在代码段中使用栈
在这里插入图片描述
在这里插入图片描述
CS:0 -CS:10存放了8个字单元的数据
CS:10-CS:2F内存空间当做栈使用。
初始状态栈为空,SS:SP要指向栈底CS:30。
这一块可能要复习一下第3章了。

21、dw可以说是用来定义数据,也可以说是用来开辟内存空间。

22、将数据、代码、栈放入不同的栈
前面所学的内容,放在一个段中很乱,能够处理的数据很少。
所以还是多个段。

start 和 end start 是一体的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值