汇编语言实验5

时间:2022-07-01 12:47:47

任务一:

将代码写入记事本,并生成exe文件,代码如下:

汇编语言实验5

在debug下用r命令查看寄存器的值:

汇编语言实验5

cs = 15F5

使用u命令反汇编代码并用g命令执行,用d命令查看

汇编语言实验5

CPU执行程序前,程序返回前,cs=15f5,ss=15f4,ds=15f3

程序加载后,data段地址 +2 =  code段地址  = stack段地址+1

实验二:

同一,代码及结果如下:

汇编语言实验5

汇编语言实验5

CPU执行程序,程序返回前,cs=15F5,ss=15F4,ds=15F3。

程序加载后,data段地址 +2 =  code段地址  = stack段地址+1

如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为:若N不满16个或为16字节则为一段,N满16但不满32也分配32字节

即 a=Nmod16,若a=0,则空间为 (N\16)*16,若a≠0,则空间为 (N\16+1)*16

实验三:

代码:

汇编语言实验5

汇编语言实验5

cs=15F3,ss=15F7,ds=15F6。

程序加载后,data段地址 -3 =  code段地址  = stack段地址 -4

实验四:

反汇编:

汇编语言实验5 不是

汇编语言实验5不是

汇编语言实验5

将伪指令“end start”改为“end”后只有第三个程序可以正确执行,当没有指明程序段入口,CPU默认从头执行。

实验五:

汇编语言实验5

结果:

汇编语言实验5

汇编语言实验5

实验六:

汇编语言实验5

运行结果:

汇编语言实验5

汇编语言实验5

实现了将a段中的前八个字型数据逆序存储到b段中

 总结:

一个程序中可以放多个不同的段。如果不加标号,程序段直接以“end”结尾则默认CPU从头开始执行,而在有些拥有多个段的程序中,不加标号,程序不能正确运行。