五、实验结果(遇到的问题及解决方法) 六、心得体会 (实验收获) 实验预习20% 实验过程20% 实验结果30% 实验报告30% 成绩
实验名称 实验目的 实验设备 实验日期 日期 实验五 编写、调试具有多个段的程序 1、熟练掌握编写汇编语言源程序的基本方法和基本框架。 2、掌握编写具有多个段的程序。 PC机器一台
一、实验内容 1. 将下面的程序编译链接,用Debug加载、跟踪,然后回答问题: assume cs:code,ds:data,ss:stack data segment dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H data ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start ① CPU执行程序,程序返回前,data段中的数据为多少? ② CPU执行程序,程序返回前,cs=________、ss=________、ds=________. ③ 该程序加载后,code段的段地址为X,则data段的段地址为________,stack段的段地址为________。 2.将下面的程序编译连接,用Debug加载、跟踪,然后回答问题: assume cs:code,ds:data,ss:stack data segment dw 0123H,0456H data ends stack segment dw 0,0 stack ends code segment
start: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start ① CPU执行程序,程序返回前,data段中的数据为多少? ② CPU执行程序,程序返回前,cs=________、ss=________、ds=________. ③ 该程序加载后,code段的段地址为X,则data段的段地址为________,stack段的段地址为________。 ④ 对于如下定义的段: name segment ……… name ends 如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为________。 3. 将下面的程序编译连接,用Debug加载、跟踪,然后回答问题: assume cs:code,ds:data,ss:stack code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends data segment dw 0123H,0456H data ends stack segment dw 0,0 stack ends end start ① CPU执行程序,程序返回前,data段中的数据为多少? ② CPU执行程序,程序返回前,cs=________、ss=________、ds=________. ③ 设程序加载后,code段的段地址为X,则data段的段地址为________,stack段的段地址为________。 4.若将1,2,3题中的最后一条伪指令“end start“改为“end”,则那个程序仍然可以正确执行?请说明原因。 5.程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果存到c段中。 assume cs:code a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends c segment db 0,0,0,0,0,0,0,0 c ends code segment start: ? code ends end start 6. 程序如下,编写code段中的代码,用push指令将a段中的word数据,逆序存储到b段中。 assume cs code a segment dw 1,2,3,4,5,6,7,8 a ends b segment dw 0,0,0,0,0,0,0,0 b ends code segment start: ? code ends end start 二、编程提示 对于实验任务4,有如下说明: 当未给编译器预先的通知,要求其从哪开始执行程序时,编译器就自动以'至上向下'的顺序进行编译执行源程序。 对于实验任务5,可以通过先把a段的数据加到c段,然后再把b段的数据加到c段来实现。 对于实验任务6,把a段当作数据段,把b段当作栈段,然后通过入栈操作可以实现逆序。 三、实验要求 实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。 实验报告必须包含内容说明: 1、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。 2、写出源程序清单和执行结果