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 是一体的