• 汇编语言 实验3


    实验3

    实验内容1:运行exe文件输出数据,并观察每一步的调试情况

    步骤1:在记事本中编写t1.asm文件

     

    步骤2:在dosbox环境下汇编、连接、运行文件,得到数据36

     

     

    步骤3:修改dl寄存器中的值为0-9中任意一个数,重新编译链接运行,查看结果

     

     

    步骤4:进入debug环境进行调试——

    -r查看各寄存器的值;

    -d查看PSP程序段前缀中前两个字节的值;(CS和DS寄存器相差10h:存放程序段前缀的内容,使程序返回时能记住返回的地址)

    -u进行反汇编

     

    步骤5:用-t(查看普通步骤)、-p(查看int 21h步骤)逐步调试,观察结果

     

    tips:

    1.在win7系统下可以用notepad打开一个文本文档,而win10Dosbox环境下不行;

    2.用‘x’在寄存器中输入相应数据也可以输出同样结果)

     

    个人理解:把0200h放入ax寄存器中,在dx中存入003xh(x为任意0-f的16进制数字),后面再加入int 21h的语句,运行后就会显示1Byte的x数据(其中a-f只会输出1)

     

     

    实验内容2:运行exe程序在屏幕左上角输出带颜色的数字,逐步调试并观察其过程

     

    步骤1:在记事本中编写t2.asm文件

     

    步骤2:在dosbox环境下汇编、连接、运行文件,清屏后运行屏幕左上角显示红色的36

     

     

    步骤3:修改原t2.asm中像内存单元传送的数据,运行后发现在屏幕上出现不同颜色的不同数字

     

     

    tips:

    1.运用mov [偏移地址],数据 时,有的平台会显示向寄存器中存入了占多少存储单元的数据,有的不会)

    2.在汇编源程序中,数据不能以字母开头,要在字母前面加0

     

    个人理解:实验1中,我发现向从0b800开始的内存单元中写入数据,能在屏幕的不同位置输出不同颜色的各种符号。而通过本次实验,我还发现向0b800内存中写入数据两个字节数据xy3z,则会在屏幕左上角顶格出现数字z,而xy控制了输出数据z的颜色

     

     

     

    实验3——总结

    收获:通过本次实验,我初步了解了一个完整的汇编小程序的形成过程(汇编、连接、运行),并且通过debug环境逐步观察了各个寄存器的变化。学到了汇编程序中CS寄存器的值总是比DS多10h,原因是需要10h的空间存放PSP(程序段前缀)以标识代码运行完毕之后程序返回的位置。明白了-p命令是用来查看 int 21h 这条指令的执行过程的。还学到了可以用mov [寄存器],数据 这种方式来将数据存入以寄存器的内容为偏移地址的内存单元中。

     

    问题:怎么用汇编语言编写一个从键盘输入字符,从屏幕输出字符的程序呢?

  • 相关阅读:
    如何使用sqlalchemy根据数据库里面的表反推出模型,然后进行查询
    5.多项式回归与模型泛化
    numpy中与高等数学有关的函数
    4.pca与梯度上升法
    你真的了解内置函数iter吗?
    peewee:精致小巧的orm,sqlalchemy的一个很好的替代品
    事件对象
    JS的事件流的概念(重点)
    jQuery的位置信息
    小米导航案例
  • 原文地址:https://www.cnblogs.com/cjh-1023/p/9979162.html
Copyright © 2020-2023  润新知