码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言实验5

时间:2018-11-25 10:12:15      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:写入   分享图片   地址   ack   image   分配   data   文件   bug   

任务一:

将代码写入记事本,并生成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,则空间为 (N\16)*16,若a≠0,则空间为 (N\16+1)*16

实验三:

代码:

技术分享图片

技术分享图片

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

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

实验四:

反汇编:

技术分享图片 不是

技术分享图片不是

技术分享图片

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

实验五:

技术分享图片

结果:

技术分享图片

技术分享图片

实验六:

技术分享图片

运行结果:

技术分享图片

技术分享图片

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

 总结:

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

 

汇编语言实验5

标签:写入   分享图片   地址   ack   image   分配   data   文件   bug   

原文地址:https://www.cnblogs.com/toubunengtu/p/10014327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!