汇编语言及应用——程序框架理解
一、 实验目的
熟悉程序框架;理解存储器分段的本质及不同段之间的关系。
二、 示例
- 将下面的程序编译链接,用debug跟踪,然后回答问题。
datas segmentdw 0123h, 0456H,0789h,0abch,0defh,0fedh,0cbah,0987h
datas ends
stacks segmentdw 1,1,1,1,1,1,1,1
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:mov ax,stacksmov ss,axmov sp,16mov ax,datasmov ds,axpush ds:[0] //0123hpush ds:[2] //0456hpop ds:[2] //0456hpop ds:[0] //0123hmov ah,4chint 21h
codes ends
end start
⑴ CPU执行程序,程序返回前,datas段中的数据为多少?将截图附在下面。
0123h, 0456H,0789h,0abch,0defh,0fedh,0cbah,0987h
⑵ CPU执行程序,程序返回前,cs = 0772H、ss = 0771H、ds = 0770H。
⑶ 设程序加载后,codes段的段地址为X,则datas段的段地址为X-2,stacks段的段地址为X-1。
2.将下面的程序编译链接,用debug跟踪,然后回答问题。
data segmentdw 0123h, 0456h
data ends
stack segmentdw 1,1
stack ends
code segment
assume cs:code, ds:data, ss:stack
start:mov ax, stackmov ss, axmov sp, 16mov ax, datamov ds,axpush ds:[0]push ds:[2]pop ds:[0]pop ds:[2]mov ax, 4c00hint 21h
code ends
end start
⑴CPU执行程序,程序返回前,datas段中的数据为多少?将截图附在下面。
运行前:0123H, 0456H
运行后:0456H,0123H
⑵CPU执行程序,程序返回前,cs = 0772H、ss = 076FH、ds = 0760H。
⑶设程序加载后,codes段的段地址为X,则datas段的段地址为X-2,stacks段的段地址为X-1。将截图附在下面。
⑷对于如下定义的段:
name segment
……
name ends
如果段中的数据占N个字节,则程序加载后,该实际占有的空间为(N/16)Byte
- 将下面的程序编译链接,用debug跟踪,然后回答问题。
code segment
assume cs:code, ds:data, ss:stack
start:mov ax, stackmov ss, axmov sp, 16mov ax, datamov ds,axpush ds:[0]push ds:[2]pop ds:[0]pop ds:[2]mov ax, 4c00hint 21h
code ends
data segmentdw 0123h, 0456h
data ends
stack segmentdw 1,1
stack ends
end start
⑴CPU执行程序,程序返回前,datas段中的数据为多少?
0123H,0456H
⑵CPU执行程序,程序返回前,cs = 0770H、ss =076FH、ds = 0760H。
⑶设程序加载后,codes段的段地址为X,则datas段的段地址为X+3,stacks段的段地址为X+4。将截图附在下面。
- 如果把1、2、3题中的最后一条伪指令“end start”改为“end”(也就是说不指明程序入口),则哪个程序能正确执行
答:第三个程序,程序入口无数据段。
三、 实验题
- 编写程序,x , y , z , v 均为16位带符号数,计算 ( v - ( x*y + z – 540 ) ) / x。把源程序附在下面,并把debug单步调试的截图附在下面。
datas segment
dw 0123H, 0456H,0789H,0abcH
datas ends
codes segment
assume cs:codes,ds:datas
start: mov ax, datasmov ds,axmov ax,ds:[0]mov bx,ds:[2]imul bxmov cx,axmov bx,dxmov ax,ds:[4]cwdadd cx,axadc bx,dxsub cx,540sbb bx,0mov ax,ds:[6]cwdsub ax,cxsbb dx,bxmov bx,ds:[0]idiv bx mov ah,4chint 21h
codes ends
end start
运行调试截图:
mov ax, datas
mov ds,ax
将数据放入ds中:
mov ax,ds:[0]
mov bx,ds:[2]
imul bx
xy结果放在dx和ax中:dx:0004H ax:edc2H
mov cx,ax
mov bx,dx
mov ax,ds:[4]
cwd
add cx,ax
adc bx,dx
将xy的结果加上z,放在bx和cx中:bx:0004H cx:f54bH
sub cx,540
sbb bx,0
将 xy + z 的结果减去540,放在bx和cx中:bx:0004H cx:f32fH
mov ax,ds:[6]
cwd
sub ax,cx
sbb dx,bx
将 xy + z– 540的结果被v,即0abcH减去,结果放在ax,dx中
ax:178dH dx:fffbH
mov bx,ds:[0]
idiv bx
v– (x*y + z– 540)的结果除以x,即0123H,最终结果放在ax,dx中
ax:fbafH dx:ffa0H
汇编语言及应用——程序框架理解相关推荐
- 《汇编语言》上机实验内容//理解
[实验目标要求] <汇编语言>是计算机科学与技术专业必修的专业基础课程.汇编语言程序设计实验的目标是学习汇编语言程序设计的基本方法和技能,熟练掌握用汇编语言设计.编写.调试和运行程序的方法 ...
- FPGA之道(22)VHDL基本程序框架
文章目录 前言 VHDL基本程序框架 VHDL基本程序框架模板 Library Entity Architecture 声明与定义部分 语句部分 VHDL基本程序框架范例 VHDL注释语法 前言 VH ...
- 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...
- 一个完整的Windows程序框架
前面我们演示了带界面的Windows程序,但那仅仅是一个弹窗,调用MessageBox函数就可以实现,不是一个真正意义上的窗口.我们通常所说的窗口包含最大化.最小化.关闭按钮,也包含菜单.单选框.图像 ...
- 深度学习笔记第二门课 改善深层神经网络 第三周 超参数调试、Batch正则化和程序框架...
本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...
- 【MFC】利用MFC向导生成单文档应用程序框架
00. 目录 文章目录 00. 目录 01. 解决方案与工程 02. 使用向导生成单文档应用程序框架 03. 预留 04. 附录 01. 解决方案与工程 每个应用程序都作为一个工程来处理,它包含了头文 ...
- 应用程序框架实战三十六:CRUD实战演练介绍
从本篇开始,本系列将进入实战演练阶段. 前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠.不过我的精力很有限,文章进度 ...
- MassTransit - .NET Core 的分布式应用程序框架
简介 MassTransit 是一个免费的.开源的.NET 分布式应用程序框架.MassTransit 使创建应用程序和服务变得容易,这些应用程序和服务利用基于消息的松散耦合异步通信来实现更高的可用性 ...
- Sharepoin学习笔记—架构系列—06 Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1
Sharepoint服务是Sharepoint的重要组成,可以说Sharepoint的许多网站功能都是基于这些服务构架起来的.这里把Sharepoint服务的相关要点总结一下. 1.什么是 Share ...
最新文章
- 吸顶wifi_分享 | 酒店WiFi网络的三种部署模式
- 分析Unicode和UTF-8
- eclipse去掉javascript校验
- 立体栅格地图_更新丨智图栅格数据—彩色版地图,智臻智美,带来更好的业务体验...
- python程序需要编译么_python需要编译么
- 静默安装apk,静默卸载apk
- Java、JSP电子书下载系统
- AHP计算权重.mat
- Python实现批量采集美女shipin<无水印>
- hightopo学习系列:hightopo介绍(一)
- Kubernetes operators
- 云锁安装Linux服务器云锁安装说明
- 熊孩子说“你没看过奥特曼”,赶紧用Python学习一下,没想到
- 面试题汇总二 Java 多线程篇
- Fluent Mybatis 牛逼!
- 如何在Linux中发现IP地址冲突
- 如何提高自己的语言表达能力?
- 盛世昊通联手民族品牌CaldiceKris,创造价值互联
- 【算法练习】蓝桥杯训练一:区间k大数查询、最大最小公倍数、k好数
- 手机h5实现长按复制(支持安卓和ios)
热门文章
- 通过语音发展史及语音识别产品对比,来看看语音识别技术都有哪些难点-通信/网络-与非网...
- 听计算机课评语与建议,听评课评语及建议
- 博科第六代SAN交换机、QLogic与博通HBA卡全面上市
- js返回计算机ip地址吗,js获取电脑IP地址???电脑连WIFI的
- 如何用html弄出抽奖的网页,用JS实现简单的网页抽奖
- 爱奇艺qsv格式转mp4最简单的方法,还有腾讯视频缓存合并转mp4,B站缓存合并 -没有之一
- OrangePI使用 Rust-python 完整教程
- 神经网络常见的激活函数汇总
- 外媒:巴西溃坝事故死亡人数增至99人 259人失踪
- PicoScope示波器数据采集软件|PICO示波器实时波形抓取软件NSAT-4000