1. 任务一:
(1)
①用edit命令开始编辑。
②出现如图界面,按下回车。
③出现此界面,按下alt键,菜单栏的每个单词首字母会变成白色,在键盘上按F键,展开File栏。
④出现如图界面,按下N键,新建一个文件。
⑤用光标把图中圈出来的地方往上拉,可以显示完全。
⑥如图输入代码。
⑦按alt,选择file,选择save。
⑧文件命名时,后缀可以是.txt,但建议用.asm,方便之后的编译和链接。
⑨保存后用alt呼出file的exit退出edit,用masm进行编译。
⑩用dir查看虚拟盘时,可以看到,出现了t1.obj,这是编译后的中间文件。
⑪用link进行连接,按几个回车键,然后执行t1。
观察到输出的结果是36
(2)
①分别修改成0和0,输出了00。
②分别修改成1和4,输出结果是14。
(3)用debug单步运行程序
①使用r命令查看各个内存器的值;
cx=0016,代表程序的大小;cs=ds+10
②使用d命令,d ds:0 1查看psp前两个字节的内容;
③使用u命令进行反汇编;
④用t命令和p命令单步执行程序,下一条汇编指令是int类型时,必须用p进入子程序,可以看到执行的值,若使用t命令则看不到。
2. 任务二:
(1)
①操作和任务一相同,输入如下代码。
②编译、连接
③cls后运行,观察到左上角有个红色的36.
(2)将代码第七行的 0433h 改写成 0432h ,第十行的 0436h 改写成 0439h,重复上述操作,观察到屏幕左上方出现红色的29。
(3)将代码第七行的 0433h 改写成 0333h ,第十行的 0436h 改写成 0336h,重复上述操作,观察到屏幕左上方出现蓝色的36。
思考:
(1)t2.asm中,mov ax,0b800h这一代码,不知道是0b80被送入ax中,还是b800被送进ax中。
经过单步调试后,发现是b800被送入ax中,感觉送入5个字节会产生问题,不知道算不算得上是错误,
当把0b800h改成b800h时,反而出了错误!不太明白。
(2)mov [bx],0433h显示的是红色的3,mov [bx],0333h显示的是蓝色的3,mov [bx],0432显示的是红色的2,虽然不知道具体什么原理,但可以猜测,0433h中,第二个数字4是控制颜色,最后一个数字3是控制输出数字。