实验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

《汇编语言》实验五课程相关推荐

  1. 汇编语言实验五-《汇编语言-王爽老师》

    5.实验五 (1).输入程序,debug调试跟踪 问题一:data段中数据不变 问题二:cs=076C.ss=076B.ds=076A 问题三:X-2.X-1 (2) 数据段以及栈均定义了两个字的数据 ...

  2. <微机原理>[汇编语言]-[实验五] 定时器实验

    实验五 定时器实验 一.实验目的 学习定时器的工作原理及使用方法. 学习定时器的初始化程序.应用程序的编写和调试. 二.实验仪器 Keil5 普中A2开发板 stc-isp 三.实验内容 数码管间隔一 ...

  3. [汇编语言]实验五:编写,调试具有多个段的程序

    (1) 实验代码: assume cs:code, ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0 ...

  4. 利用c51进行数模转换并在液晶屏上显示_51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)...

    本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ------------- ...

  5. EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)

    EDA实验课课程笔记(五)--NC-verilog的介绍与使用(一) NC简介 NC内部文件结构 NC-verilog的两种启动方式 图形界面方式演示视频 简介:简单介绍NC及其精要的总结,防止以后忘 ...

  6. C#面向对象程序设计课程实验五:实验名称:C#面向对象技术

    C#面向对象程序设计课程实验五:实验名称:C#面向对象技术 实验内容:C#面向对象技术 一. 实验目的及要求 二.实验环境 三.实验内容与步骤 3.1.实验内容:测试类,实现多态 3.2.实验步骤 3 ...

  7. 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)

       本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ---------- ...

  8. 山东大学linux应用实验五,【Linux】山东大学Linux应用课程实验记录

    找到这篇博文的人,一定被Linux实验弄得很爆炸吧哈哈哈. 这里是我Linux实验的记录,供大家学习和参考.如有错误,还请指正. 实验一 一. 基本命令 显示系统当前时间. date 显示2003年的 ...

  9. 《大学“电路分析基础”课程实验合集.实验五》丨线性有源二端网络等效电路的研究

    实验五  线性有源二端网络等效电路的研究 目录 实验五  线性有源二端网络等效电路的研究 1 实验目的 2 实验仪器与设备 3 实验预习 4 实验原理 5 实验内容与步骤 6 实验要求与注意事项 7 ...

最新文章

  1. CentOS 7 快速部署 ELK
  2. python基础教程第二版和第三版哪个好-最好的Python入门教材是哪本?
  3. Python处理PDF与CDF
  4. [python] 之 常用内建函数
  5. arm-2014.05 编译三星内核错误 “not support ARM mode ‘smc 0’ ”
  6. 7-8 最优服务次序问题 (10 分)
  7. java 读取 文本块_Java 13:文本块
  8. html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
  9. ajax当页post请求,tag落地页--通过ajax-post请求数据
  10. 文字排版不可不看的优秀案例合集
  11. 用python做简单的题目_「每日一练」巧用python做小学的数学题
  12. Word两端对齐问题
  13. ------表达式---数值表示/算术运算符
  14. Character-level recurrent sequence-to-sequence model (翻译)
  15. 新浪微博开放平台接入
  16. WiFi能连上但是上不了网怎么办?
  17. 【git commit --amend 修改提交记录】
  18. VMware tools 安装失败
  19. c#生成二维码,一维码(条形码)
  20. 今日发现一个挺好的软件,控制音量 App音量控制(App Volume Control)v2.17 安卓版

热门文章

  1. C中printf函数的实现原理
  2. linux存储--页面置换算法(十一)
  3. Nacos系列:基于Nacos的注册中心
  4. linux 查看端口被哪个程序占用
  5. php通过正则提取页面相关信息
  6. 【leetcode】Remove Linked List Elements(easy)
  7. C#调用ArcGIS REST服务
  8. IHttpHandler的妙用之防盗链
  9. Linux grep命令——文本搜索工具
  10. Openldap配置TLS加密传输(完整版——shell脚本实现[分别在客户端与服务器端执行脚本,实现TLS加密])