汇编语言实验5
Posted toubunengtu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言实验5相关的知识,希望对你有一定的参考价值。
任务一:
将代码写入记事本,并生成exe文件,代码如下:
在debug下用r命令查看寄存器的值:
cs = 15F5
使用u命令反汇编代码并用g命令执行,用d命令查看
CPU执行程序前,程序返回前,cs=15f5,ss=15f4,ds=15f3
程序加载后,data段地址 +2 = code段地址 = stack段地址+1
实验二:
同一,代码及结果如下:
CPU执行程序,程序返回前,cs=15F5,ss=15F4,ds=15F3。
程序加载后,data段地址 +2 = code段地址 = stack段地址+1
如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为:若N不满16个或为16字节则为一段,N满16但不满32也分配32字节
即 a=Nmod16,若a=0,则空间为 (N16)*16,若a≠0,则空间为 (N16+1)*16
实验三:
代码:
cs=15F3,ss=15F7,ds=15F6。
程序加载后,data段地址 -3 = code段地址 = stack段地址 -4
实验四:
反汇编:
不是
不是
是
将伪指令“end start”改为“end”后只有第三个程序可以正确执行,当没有指明程序段入口,CPU默认从头执行。
实验五:
结果:
实验六:
运行结果:
实现了将a段中的前八个字型数据逆序存储到b段中
总结:
一个程序中可以放多个不同的段。如果不加标号,程序段直接以“end”结尾则默认CPU从头开始执行,而在有些拥有多个段的程序中,不加标号,程序不能正确运行。
以上是关于汇编语言实验5的主要内容,如果未能解决你的问题,请参考以下文章