实验4汇编实验

发布 2023-04-19 09:42:28 阅读 8914

数学与软件科学学院实验报告。

学期:2017至 2018第 2 学期2023年4月4日

课程名称: 汇编语言专业:信息与计算科学班级: 2015级_5班。

实验编号:4实验项目: 编写、调试具有多个段的程序。

指导教师:冉茂华。

姓名:黄玉含学号:2015060512 实验成绩:

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

执行结果如下:

说明了cs=__076c___ss=__076b___ds=__076a___

(1)、cpu执行程序,程序返回前,data段中的数据是多少?

还未执行时的数据:

执行程序后的数据:

不变,因为程序加载进去段内容就已经固定。

2)、cpu执行程序,程序返回前,cs=__076c___ss=__076b___ds=__076a

3)、设程序加载后,code段的段地址为x,则data段的段地址为___x-2___stack段的段地址为___x-1___

分析:程序段的段地址总是16的倍数且程序在内存中顺序加载。

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

1)、cpu执行程序,程序返回前,data段中的数据是多少?

返回前的data段中内容为0123h,0456h,说明在编译链接时data段已经加载进内存。

2)、cpu执行程序,程序返回前,cs=__076c___ss=__076b___ds076a___

3)、设程序加载后,code段的段地址为x,则data段的段地址为___x-2___stack段的段地址为___x-1___

4)、对于如下定义的段:

name segment

name ends

如果段中的数据占n个字节,则程序加载后,该段实际占有的空间为((n-1)/16+1)*16。

分析:段在程序加载后实际占据的空间以16为单位。

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

1)、cpu执行程序,程序返回前,data段中的数据是多少? 01 23 04 56

2)、cpu执行程序,程序返回前,cs=__076a___ss=__076e___ds=__076d

3)、设程序加载后,code段的段地址为x,则data段的段地址为__x+3___stack段的段地址为___x+4___

分析:程序按顺序执行。

4、如果将题中的的最后一条伪指令“end start”改为“end”,则哪个程序仍然可以正确的执行?请说明原因。

答:第3题的程序,因为程序顺序执行。

分析:如果不指名start入口地址,并且使用end替换end start,程序仍可以执行。因为如果不指名入口,程序则从加载进内存的第一个单元起开始执行,但因为程序中有部分是作为数据使用的,如果不指名入口,cpu会将数据当作汇编指令执行,所以一般要指明入口地址。

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

答:**如下:

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:

mov ax,c

mov ds,ax

mov cx,8

mov bx,0

mov ax,a

mov es,ax

mov ax,b

mov ss,ax

s: mov al,es:[bx]

add al,ss:[bx]

mov [bx],al

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end start

6、编写code段中的**,用push指令将a段中的前8个字型数据逆序存放到b段中。

assume cs: code

a segment

dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh

a ends

b segment

dw 0,0,0,0,0,0,0,0

b ends

code segment

start:

code ends

end start

**如下:assume cs: code

a segment

dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh

a ends

b segment

dw 0,0,0,0,0,0,0,0

b ends

code segment

start:mov ax,a

mov ds,ax

mov ax,b

mov ss,ax

mov sp,10h

mov cx,8

mov bx,0

s:push [bx]

add bx,2

loop s

mov ax,4c00h

int 21h

code ends

end start

实验4交换实验

配置vlan trunk vtp vlan之间路由。一 实验拓扑。二 实验需求。1 如图所示,拓扑中有2个vlan的用户,一个是pc1 vlan 100 另外一个是pc2 vlan 200 他们分别接在switch a的f0 1和switch b的f0 2,其中pc1和pc2采用路由器模拟 2 设备...

实验4密立根油滴实验

实验4 密立根油滴实验。实验简介 密立根用了七年功夫研究电子电荷,于1910年发表了油滴实验。这个实验首次证实电荷的量子化,测定了电子电荷的正确数值。对物理学的发展起过重要作用。密立根油滴实验方法巧妙,物理学界将密立根油滴实验作为实验物理的典范。密立根由于测定了电子电荷和借助光电效应测量出普朗克常数...

实验4基础实验

编号 04 本实验为电子办公软件中演示文稿制作软件powerpoint的应用实验,其主要目的在于 1.掌握演示文稿的概念,了解它与word相比较有什么异同 2.学会使用powerpoint制作 并茂,具有合理动画效果的演示文稿 3.学会对演示文稿进行复杂的排版操作,重点练习下面的操作 用创建演示文稿...