程序6.2
功能: 8个数据加和计算
assume cs:code
code segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
start: mov bx,0
mov ax,0
mov cx,8
s: add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00H
int 21H
code ends
end start
-
start
指明程序的入口所在,即 CS:IP
-
dw
即(define word),定义 字 型数据
程序加载到内存后
- 8个字型数据,占用16个内存单元
-
用 dw 定义的数据
被放在 从CS:0 开始到 CS:F 的前16个内存单元里面
- 后面的内存单元从CS:0010 开始,存放汇编指令对应的机器码
检测点6.1
第一问
审题: 什么叫用内存单元中的内容改写程序中的数据?
- 程序中的数据,就是dw关键词后面那一串8个数据,要改写这些数据,就是要找到这些数据所在的位置(内存单元的地址),而这些数据就排在 从 CS:0 开始到 CS:F 的前 16个内存单元,使用
CS:[bx]
依次访问即可
第二问
审题:如何使用栈来传送数据?
- 完全参考书上 程序6.3 来写
- 第一个dw关键词开辟了8个字的空间,并且存入了数据
- 第二个dw关键词开辟了10个字的空间,用作栈空间
- 可以计算出栈顶的偏移地址 SP = (8+10)x2= 36 =24H
- 8个字的数据依旧使用
CS:[bx]
来访问
- 弹出操作 pop 即可
简单复习