1、 计算机科学系实验报告(首页) 一、实验目的:掌握具有代码段、数据段、堆栈段等多个段程序的编写和调试二、实验内容、程序清单及运行结果1、编译连接下面程序,用debug加载、跟踪,回答问题。assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart:mov ax,stack mov ss,axmov sp,16 mov ax,data m
2、ov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00hint 21hcode endsend start(1)CPU执行程序,程序返回前,data段中的数据为多少?执行程序后,data段中的数据不变,为原始数据。(2)CPU执行程序,程序返回前,cs=0772H,ss=0771H,ds=0770H.(3)程序加载后,code段地址设为X,则data段地址为(x-2),stack段的段地址为(X-1).2、编译连接下面程序,用debug加载、跟踪,回答问题。assume cs:code,ds:data,ss:stackdata segment
3、dw 0123h,0456hdata endsstack segmentdw 0,0stack endscode segmentstart:mov ax,stack mov ss,axmov sp,16 mov ax,data mov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00hint 21hcode endsend start(1)CPU执行程序,程序返回前,data段中的数据为多少?执行程序后,data段有16个字节空间,前两个字数据不变,其余为0。(2)CPU执行程序,程序返回前,cs=0772H,ss=07771H,ds=077
4、1H。(3)程序加载后,code段地址设为X,则data段地址为(x-2),stack段的段地址为(X-1)。(4)对于如下定义的段:name segmentname ends如果段中数据位N个字节,程序加载后,该段实际占据空间为N/16Byte。3、编译连接下面程序,用debug加载、跟踪,回答问题。assume cs:code,ds:data,ss:stackcode segmentstart:mov ax,stack mov ss,axmov sp,16 mov ax,data mov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00h
5、int 21hcode endsdata segmentdw 0123h,0456hdata endsstack segmentdw 0,0stack endsend start(1)CPU执行程序,程序返回前,data段中的数据为多少?data 段数据未变。(2)CPU执行程序,程序返回前,cs=0070H,ss=0074H,ds=0073H。(3)程序加载后,code段地址设为X,则data段地址为(x+3),stack段的段地址为(X+4)。5、编写code段中的代码,将a段和b段数据依次相加,结果存入c段assume cs:codea segmentdb 1,2,3,4,5,6,7,8
6、a endsb segmentdb 1,2,3,4,5,6,7,8b endsc segmentdb 0,0,0,0,0,0,0,0c endscode segmentstart:mov ax,amov ds,axmov ax,bmov ss,axmov ax,cmov es,axmov bx,0mov cx,8s:mov al,ds:bxadd al,ss:bxmov es:bx,alinc bxloop smov ax,4c00hint 21hcode endsend start 6、编写code段中代码,用push指令将a段中前8个字型数据逆序存储到b段中。assume cs:codea
7、 segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segmentdw 0,0,0,0,0,0,0,0b endscode segmentstart:mov ax,amov ds,axmov ax,bmov ss,axmov sp,10hmov bx,0mov cx,8s:push ds:bxadd bx,2loop smov ax,4c00hint 21hcode endsend start三、实验结论、实验体会将程序中的数据、代码、栈放入不同的段,可以是编写的程序更加有逻辑性,他人容易看懂,也更好用地debug进行调试,跟踪程序的执行过程。