实验内容

(1)第1步,编写汇编源程序t1.asm, 源程序代码如下:

  assume cs:code

  code segment

        mov ah,2

        mov dl,3

        add dl,30h

        int 21h

        mov ah,2

        mov dl,6

        add dl,30h

        int 21h

         mov ah,4ch

        int 21h

code ends

end

因为对汇编语言的一系列还不熟练,所以花了点时间,终于进去了。

对源程序 t1.asm 进行汇编、连接、运行、调试

(1) 运行程序,观察程序输出结果是什么?

输出结果为36

(2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字,重新汇编→ 连接→运行,观察结果的变化。

我将line4中的值改为1,line9中的值改为4,

(3) 用debug对生成的可执行文件 t1.exe 进行调试。

① 使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多 少,它们之间是否满足关系(cs)=(ds)+10H?

cx为0016H,cs为076A,ds为075A,符合关系(cs)=(ds)+10H。

② PSP(程序段前缀)的头两个字节是CD 20, 用debug查看PSP的内容,验证是否 如此。

的确如此

③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

反汇编得到的如图所示

④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。

出现了3

出现了6

组成了最后t1.exe的36。

(2)第1步,编写汇编源程序t2.asm,源程序代码如下

assume cs:code

code segment

    mov ax,0b800h

    mov ds,ax

    mov bx,0

    mov [bx],0433h

      add bx,2

    mov [bx],0436h

    mov ax,4c00h

    int 21h

code ends

end

第2步,对源程序 t2.asm 进行汇编、连接、运行、调试

(1) 对t2.asm进行汇编、连接后,得到可执行文件t2.exe。运行t2.exe,观察程序运行 结果,验证是否在屏幕左上方出现红色的数值36

经过cls之后,重新输入t2,出现了目标结果

(2) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0432h, line10 的 0436h→0439h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。

修改成功

出现了红色的29

(3) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。

修改成功

出现了蓝色的36

这个发现和之前的实验一最后一部分类似。

实验一向内存从B8100H开始的单元中填写数据,每一次填写的数据不一样会出现不同的表情符号,而这次编写代码0433h举例来说,mov这个操作,043三个字节决定了颜色的不同,最后一个字节决定了输出的内容。而【】符号似乎就是颜色的填充工具。

分析这次两个练习输出的不同

    mov ax,0b800h                    mov ah,2

    mov ds,ax                            mov dl,3

    mov bx,0                             add dl,30h

    mov [bx],0433h                   mov ah,2

      add bx,2                             mov dl,6

    mov [bx],0436h                   add dl,30h

第一次有一项add dl,30h即将数字转换为相对应的ASCII码打印出来,这个实验通过8位寄存器实现,而第二次是通过16位寄存器,直接输出。

实验总结

通过这次实验,我知道了一个完整汇编程序的输入输出的流程,学会了对于数字颜色的把控,以及两种输出的格式。

     

转载于:https://www.cnblogs.com/-Cold/p/9865351.html

汇编语言实验 3 编程、编译、连接、跟踪相关推荐

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

    4.实验四 1.编程传送数据到内存 编写代码 编译连接 debug调试 调试几次循环发现没有错误,可以直接在 loop 指令处使用 p 指令,跳过剩余的循环 执行结束后查看一下内存,是否正确写入 2. ...

  2. iptables连接跟踪ip_conntrack

    一.ip_conntrack模块介绍: ip_conntrack 是Linux NAT一个跟踪连接条目的模块记录着允许的跟踪连接条目ip_conntrack 模块会记录 tcp 通讯协议的 estab ...

  3. 汇编语言实验4:分支程序题目设计

    <汇编语言程序设计>实验报告 实验四 分支程序设计 1. 实验目的 2. 实验任务 3. 实验步骤 3.1 分支结构题目设计 3.2 流程图及代码 3.3 代码分析 3.4 运行测试 4. ...

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

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

  5. 微型计算机原理怎么编程,微机原理实验一编程实现键盘输入和显示

    <微机原理实验一编程实现键盘输入和显示>由会员分享,可在线阅读,更多相关<微机原理实验一编程实现键盘输入和显示(9页珍藏版)>请在人人文库网上搜索. 1.实验一编程实现键盘输入 ...

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

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

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

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

  8. 汇编语言实验八-《汇编语言-王爽老师》

    8.实验八 首先将程序编译连接,然后debug调试跟踪. 查看一下寄存器内容 发现IP的初始值为5,说明代码段前面还有其他内容(start前面的两条程序结束指令).然后查看一下各个指令所占的内存空间 ...

  9. 汇编语言实验六-《汇编语言-王爽老师》

    6.实验六 编写代码如下: assume cs:codesg,ss:stacksg,ds:datasg stacksg segmentdw 0,0,0,0,0,0,0,0 stacksg endsda ...

最新文章

  1. IntPtr to bytes
  2. jquery UI入门
  3. C/C++打造Windows岁月留声机
  4. Linux加密框架 crypto算法模板 以及HMAC算法模板实例
  5. 2018-2019-1 《信息安全系统设计基础》教学进程
  6. IOS经常使用的性能优化策略
  7. c语言结构体菜单显示框架,请教c语言结构体嵌套问题。field `atItem' has incomplete type...
  8. cni k8s 插件安装_使用kind来快速部署k8s环境
  9. springboot整合rabbitmq之消息的确认机制
  10. 学习通视频enc生成方法
  11. (深度剖析结构)模块化解释矢量控制
  12. 弗雷歇距离 matlab,离散Fréchet(弗雷歇) 距离评价曲线相似度
  13. 从逻辑学中的偷换概念谈起
  14. 基础条件查询 where
  15. linux asm软件卸载,linux下卸载oracle
  16. Android 银联控件支付开发流程
  17. something just like this
  18. 先进工艺22nm FDSOI和FinFET简介
  19. 1.17 嵌入式帅国豪
  20. HEX文件校验和算法

热门文章

  1. GDCM:提取DICOM文件的加密内容到der文件的测试程序
  2. allocator_difference_type的实例
  3. ITK:在没有写访问权的情况下遍历整个图像
  4. ITK:将自定义操作应用于图像中的每个像素
  5. ITK:概念检查是浮点数
  6. VTK:PolyData之Casting
  7. VTK:网格之SolidClip
  8. VTK:相互作用之KeypressEvents
  9. Qt Linguist基于文本ID的翻译
  10. C语言实现adaline模型(附完整源码)