《汇编语言》实验五课程
实验1
将下面的程序编译链接, 用Debug加载、跟踪,然后回答问题
assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data endsstack segmentdw 0,0,0,0,0,0,0,0 stack endsstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start
(1)CPU执行程序,程序返回前,data段中的数据为多少?
答:23 01 56 04 89 07 BC 0A EF 0D ED 0F BA 0C 87 09
(2)CPU执行程序,程序返回前,cs=076C、ss=076B、ds=076A。
(3)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。
实验2
将下面的程序编译、连接,用Debug加载、跟踪,然后回答问题。
(1)CPU执行程序,程序返回前,data段中的数据为多少?
答:23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00
(2)CPU执行程序,程序返回前,cs=076C、ss=076B、ds=076A。
(3)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。
(4)对于如下定义的段:
name segment
…
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占用的空间为(N/16+1)*16。
实验3
将下面的程序编译、连接,用Debug加载、跟踪,然后回答问题。
assume cs:code, ds:data, ss:stackcode segmentstart: mov ax,stackmov ss, axmov sp,16mov ax, datamov ds, axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsdata segmentdw 0123h, 0456hdata endsstack segmentdw 0,0stack endsend start
(1)CPU执行程序,程序返回前,data段中的数据为多少?
答:23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00
(2)CPU执行程序,程序返回前,cs=076A、ss=076E、ds=076D。
(3)设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4。
实验4
如果将(1)、(2)、(3)题中的最后一条伪指令“end start”改为“end”(也就是说,不知名程序的入口),则哪个程序仍然可以正确执行?请说明原因
assume cs:code a segmentdb 1,2,3,4,5,6,7,8 a endsb segmentdb 1,2,3,4,5,6,7,8 b endsc segment ; db 0,0,0,0,0,0,0,0 c ends ; code segment start: mov ax,amov ds,axmov ax,cmov es,axmov bx,0mov cx,8 s1: mov al,ds:[bx]mov es:[bx],alinc bxloop s1mov ax,bmov ds,axmov bx,0mov cx,8 s2: mov al,ds:[bx]add es:[bx],alinc bxloop s2mov ax,4c00hint 21hcode endsend start
实验一
实验二
实验三
经过比较发现:实验1、2不能正确执行,实验3仍然可以正确执行。
原因:end start变成end,说明不指明程序入口,程序默认从IP=0处执行;实验3是代码段在前,而实验1、2是代码段在后,说明实验3中IP=0时就可以执行代码段的内容。所以实验3仍可以正确执行。
实验5
assume cs:code a segmentdb 1,2,3,4,5,6,7,8 a endsb segmentdb 1,2,3,4,5,6,7,8 b endsc segment ; db 0,0,0,0,0,0,0,0 c ends ; code segment start: mov ax,amov ds,axmov ax,cmov es,axmov bx,0mov cx,8 s1: mov al,ds:[bx]mov es:[bx],alinc bxloop s1mov ax,bmov ds,axmov bx,0mov cx,8 s2: mov al,ds:[bx]add es:[bx],alinc bxloop s2mov ax,4c00hint 21hcode endsend start
① 在实现数据相加前,逻辑段 c 的 8 个字节:00 00 00 00 00 00 00 00
② 执行完实现加运算的代码后,逻辑段 c 的 8 个字节:02 04 06 08 0A 0C 0E 10
3.根据①和②的调试,实验程序正确实现数据相加
实验6
程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中
assume cs:code a segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh a endsb segmentdw 0,0,0,0,0,0,0,0 b endscode segment start: mov ax,amov ds,axmov ax,b mov bx,0mov ss,axmov sp,16mov cx,8 s: push [bx]add bx,2loop s mov ax,4c00hint 21h code endsend start
转载于:https://www.cnblogs.com/zwHou/p/10117172.html
《汇编语言》实验五课程相关推荐
- 汇编语言实验五-《汇编语言-王爽老师》
5.实验五 (1).输入程序,debug调试跟踪 问题一:data段中数据不变 问题二:cs=076C.ss=076B.ds=076A 问题三:X-2.X-1 (2) 数据段以及栈均定义了两个字的数据 ...
- <微机原理>[汇编语言]-[实验五] 定时器实验
实验五 定时器实验 一.实验目的 学习定时器的工作原理及使用方法. 学习定时器的初始化程序.应用程序的编写和调试. 二.实验仪器 Keil5 普中A2开发板 stc-isp 三.实验内容 数码管间隔一 ...
- [汇编语言]实验五:编写,调试具有多个段的程序
(1) 实验代码: assume cs:code, ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0 ...
- 利用c51进行数模转换并在液晶屏上显示_51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)...
本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ------------- ...
- EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)
EDA实验课课程笔记(五)--NC-verilog的介绍与使用(一) NC简介 NC内部文件结构 NC-verilog的两种启动方式 图形界面方式演示视频 简介:简单介绍NC及其精要的总结,防止以后忘 ...
- C#面向对象程序设计课程实验五:实验名称:C#面向对象技术
C#面向对象程序设计课程实验五:实验名称:C#面向对象技术 实验内容:C#面向对象技术 一. 实验目的及要求 二.实验环境 三.实验内容与步骤 3.1.实验内容:测试类,实现多态 3.2.实验步骤 3 ...
- 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)
本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ---------- ...
- 山东大学linux应用实验五,【Linux】山东大学Linux应用课程实验记录
找到这篇博文的人,一定被Linux实验弄得很爆炸吧哈哈哈. 这里是我Linux实验的记录,供大家学习和参考.如有错误,还请指正. 实验一 一. 基本命令 显示系统当前时间. date 显示2003年的 ...
- 《大学“电路分析基础”课程实验合集.实验五》丨线性有源二端网络等效电路的研究
实验五 线性有源二端网络等效电路的研究 目录 实验五 线性有源二端网络等效电路的研究 1 实验目的 2 实验仪器与设备 3 实验预习 4 实验原理 5 实验内容与步骤 6 实验要求与注意事项 7 ...
最新文章
- CentOS 7 快速部署 ELK
- python基础教程第二版和第三版哪个好-最好的Python入门教材是哪本?
- Python处理PDF与CDF
- [python] 之 常用内建函数
- arm-2014.05 编译三星内核错误 “not support ARM mode ‘smc 0’ ”
- 7-8 最优服务次序问题 (10 分)
- java 读取 文本块_Java 13:文本块
- html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
- ajax当页post请求,tag落地页--通过ajax-post请求数据
- 文字排版不可不看的优秀案例合集
- 用python做简单的题目_「每日一练」巧用python做小学的数学题
- Word两端对齐问题
- ------表达式---数值表示/算术运算符
- Character-level recurrent sequence-to-sequence model (翻译)
- 新浪微博开放平台接入
- WiFi能连上但是上不了网怎么办?
- 【git commit --amend 修改提交记录】
- VMware tools 安装失败
- c#生成二维码,一维码(条形码)
- 今日发现一个挺好的软件,控制音量 App音量控制(App Volume Control)v2.17 安卓版