实验内容 一:
运行截图:
调试截图
将0403h改为0441h后 :
运行截图:
调试截图 :
实验内容 二 :
1)
调试截图:
2)
参考代码: (来源于网络)
assume cs:code
code segment
mov ax,20h
mov ss,ax
mov sp,40h
mov bx,3f3eh
mov cx,32
s: push bx
sub bx,0202h
loop s
mov ax,4c00h
int 21h
code ends
end
调试截图
思考:
mov ss,ax 指定堆栈段为0:200处
mov sp,40h 指定栈顶指针为0:23f处
定义栈位置为200-23f 然后将数据0~63 倒序压入栈
在push bx 命令前 0:200 23f 之间的内存
第一次 push 后
逐渐循环......
最终达成目的
实验内容 三 :
(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
解答:
第一空 : 将段代码CS:存放当前正在运行的程序代码所在段的段基值赋值给 ds
第二空 : 推出来的
先随便令 cx=20
通过反汇编
“mov ax,4c00h"之前 是至 0017
所以如果将“mov ax,4c00h"之前的指令复制到内存0:200处 需复制17个字节
需循环17次
cx =17h