资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
实验 2 编写、调试具有多个段的程序【实验名称】 编写、调试具有多个段的程序 【实验目的】 1.学会汇编语言对多个段的程序编写及调试 2.掌握段地址的计算方法 【实验环境】 硬件环境:8086 PC 机 软件环境:Windows XP, masm 编译工具 【实验内容】 1. 编译、连接具有多个段的程序,用 debug 加载,跟踪,回答实验题后相关问题 2. 编写 code 段中的代码,将 a 段和 b 段中的数据依次相加,将结果存到 c 段中 3. 编写 code 段中的代码,用 push 指令将 a 段中的前 8 个字型数据,逆序存储到 b 段中 【实验步骤】 1. 将下面的程序连接,用 debug 加载,跟踪,然后回答问题assume cs:code,ds:data,ss:stack data segmentdw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h date endsstack segmentdw 0,0,0,0,0,0,0,0 stack endscode segment start: mov ax, stackmov ss, axmov sp, 16mov ax, datamov ds, axpush ds:0push ds:2pop ds:2pop ds:0mov ax, 4c00hint 21h code ends end start(1) CPU 执行程序,程序返回前,data 段中的数据是多少? (2) CPU 执行程序,程序返回前,cs= 、ss= 、ds= 。 (3) 设程序加载后,code 段的段地址为 X,则 data 段的段地址为 ,stack 段的段 地址为 。 2. 将下面的程序编译连接,用 debug 加载,跟踪,然后回答问题assume cs:code, ds:data, ss:stackdata segmentdw 0123H, 0456H data endsstack segmentdw 0,0 stack endscode segment start: mov ax, stackmov ss, axmov sp, 16mov ax, datamov ds, axpush ds:0push ds:2pop ds:2pop ds:0mov ax, 4c00hint 21h code ends end start(1) CPU 执行程序,程序返回前,data 段中的数据是多少? (2) CPU 执行程序,程序返回前,cs= 、ss= 、ds= 。 (3) 设程序加载后,code 段的段地址为 X,则 data 段的段地址为 ,stack 段的段 地址为 。 (4) 对于如下定义的段:name segment name ends 如果段中的数据占 N 个字节,则程序加载后,该段实际占有的空间为 。3. 将下面的程序编译连接,用 debug 加载、跟踪,然后回答问题。assume cs:code, ds:data, ss:stack code segment start: mov ax, stackmov ss, axmov sp, 16mov ax, datamov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax, 4c00hint 21h code endsdata segmentdw 0123h, 0456h data endsstack segment dw 0,0 stack endsend start(1) CPU 执行程序,程序返回前,data 段中的数据是多少? (2) CPU 执行程序,程序返回前,cs= 、ss= 、ds= 。 (3) 设程序加载后,code 段的段地址为 X,则 data 段的段地址为 ,stack 段的段 地址为 。4. 如果将(1)、(2)、(3)题中的最后一条伪指令”end start”改为”end” (也就是说, 不指明程序的入口) ,则哪个程序仍然可以正确执行?请说明原因。 5. 程序如下,编写 code 段中的代码,将 a 段和 b 段中的数据依次相加,将结果存到 c 段 中。assume cs:code a segmentdb 1,2,3,4,5,6,7,8 a endsb segmentdb 1,2,3,4,5,6,7,8b endsc segmentdb 0,0,0,0,0,0,0,0 c endscode segment start: mov ax,amov ds,ax mov bx,0 mov cx,8 S: Mov al ds:bx Add al,ds:bx+16 Mov ds:bx+32,al Inc bx Loop s Mov ax,4c00h Int 21hcode ends end start 6. 程序如下,编写 code 段中的代码,用 push 指令将 a 段中的前 8 个字型数据,逆序存 储到 b 段中。assume cs:code a segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh a endsb segmentdw 0,0,0,0,0,0,0,0 b endscode segment start:mov ax,amov ds,axmov bx,0mov ax,bmov ss,ax mov sp,16 mov cx,8 S:Push bx Intc bx Intc bx Loop s Mov ax,4c00h Int 21h Code ends End start code ends end start
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号