欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    汇编语言实验.docx

    • 资源ID:14301696       资源大小:17.53KB        全文页数:7页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言实验.docx

    1、汇编语言实验汇编语言实验汇编语言程序设计 实验一 DEBUG 程序使用技巧学号: 姓名:1. 寄存器和内存开始 Debug 程序。输入“Q ” 退出程序。再次启动 Debug。输入 “r ”来显示CPU的当前状态和寄存器中的当前内容。输入 “r AX ”和“1234”,_寄存器中的内容变为 1234。输入 “r DS ”和“2000”,_寄存器中的内容变为 2000。输入 “d DS:1000 ”来显示数据段中 80H 字节数据,把数据抄在这里:输入 “f DS:1000 1100 77 ”再显示一次这 80H 字节。判断这条指令的作用是什么?再输入 “d 2000:1000 ”来显示数据段中

    2、 80H 字节数据。观察与前面的数据有无不同。输入 “d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中 2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。2输入机器码,使用单步和断点退出 Debug,再重新启动 Debug。输入 “r ”观察 CPU 的状态,下一条指令是什么?使用两种方式输入一段程序,第一种方式:直接输入机器码。输入 “u ”来显示程序段中的指令序列。然后输入 “d CS:100 ” 来显示代码段中的数据。观察显示内容。“u CS

    3、:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来:使用输入 “r ”观察 CPU 的状态,使用 “t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让 IP 寄存器中的值是 100H。一直监视 AX 和 IP 寄存器的内容变化,尤其是标志位的变化。第二种方式,是输入汇编语句。重启 Debug 程序。先输入 “a CS:100 ”,然后输入: MOV AX, FF00 ADD AX,01F0 MOV BX,AX NEG BX ADD AX,BX输入 “u CS:100 10A ”就可以得到这几条语句的机器码。把机器码记录下来:使用命令“r ip ”再输入

    4、“100 ”,可以将寄存器 IP 中的内容置为 “100H”。再输入“r ”观察 CPU 的状态,然后反复输入 “t ” 跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另外,说明这段程序完成什么任务?重新把寄存器 IP 的内容变为 100H,不使用跟踪命令 “t”,改用“g 10c”来完成程序。程序中还可以加断点,做法是在程序中加入 “int 3” 这条指令。如果这条指令在程序的末尾,我们可以通过输入 “g ” 来完成运行程序。这样就不需像上面需要告诉 Debug 程序最后机器码字节的地址偏移量了。“int 3”是 Debug 中很有效的返回控制指令。把这条指令放在程序中必要的位置上,

    5、在这条指令后面的代码在不允许时就不会运行。3ASCII 字符码,从键盘输入,从显示器输出(i) 标准 ASCII ( American Standard Code for Information Interchange ) 码使用 7- bit 二进制数来代表字符。一般文本信息经常用 ASCII 编码。使用命令 “a CS:100 ”, 输入下面的代码:MOV BX,0MOV BX,BLINC BXCMP BH,1JNE 103INT 3使用 “d DS:0 100 ”命令,显示程序运行前相应内存段中的数据。运行上面的程序来填充 DS:0000-00FF 这段内存中的内容。再次输入 “d DS

    6、:0 100 ”命令来显示填充的内容。在窗口的右边,可以看到相应的ASCII码字符。如果填充的内容不是字符,显示就用点表示。用类似方法,如何将字符串“How are you?”写入计算机内存呢? (ii) 计算机的 BIOS ( Basic Input / Output System ) 程序有很多子程序,用来通过标准外设处理输入和输出,比如,键盘和显示器。BIOS 的程序都可以通过称为系统中断的特殊指令被调用。例如:INT 16H 返回值是把下一个键盘输入值送入寄存器 ALINT 10H 当 BH = 0 时,将光标移到由寄存器 DH 和 DL 内容所指定的行和列的位置上INT 21H 当

    7、AH = 2 时,将 DL 中的内容作为 ASCII 码的字符显示出来INT 21H 当 AH = 9 时,将位于 DS:DX 的内容显示为字符串 ( 一个 ASCII 码序列由 $ 符作结束符)。(ii)(a) 将下列代码输入程序段 CS:0100 中:MOV AH,0INT 16HINT 3JMP 100使用“u CS:100 110 ” 命令,将程序转换为机器码。其中 “JMP 100”的机器码是 “EBF9”。如果使用的是相对寻址方式,我们可以猜测出机器码中“F9”的含义么?相对寻址方式比绝对地址方便的地方是什么?重置 IP 的内容为 100H,再输入“g ”来执行程序。程序中断时,输

    8、入字母“B”,检查寄存器 AL 中的内容为: _重复上面的动作,但输入不同字母,记录下每次 AL 中的内容,能不能判断出来,这段程序的功能是什么?(ii)(b) 将下面的代码输入 CS:200 中:MOV BH,0MOV DL,0MOV DH,0MOV AH,2INT 10MOV DX,0MOV AH,9INT 21INT 3通过命令 “e DS:0 68 65 6C 6C 21 24.”在内存数据段中输入了一个字符串,将 IP 设为 200,输入 “g.” 来运行程序,在屏幕左上角能找到输入的字符串是什么:_这个程序是用来做什么的? _4. 内存寻址把下面程序输入到内存中以地址 CS:000

    9、0 为起始的代码段中。MOV AX,33MOV AX,SI MOV AX,SI+2 MOV AX,SI2MOV AX,25 MOV AX,BX+SI MOV AX,BX+SI-3 MOV AX,20BX+SI-10 INT 3这些指令分别使用了哪些寻址方式?将上面的程序翻译为机器码时,可以发现有些指令的机器码是相同的。哪些代码的机器码相同?根据发现,得出的结论是什么?将数据段与代码段对齐,将数据段中前 40H 字节的数据显示出来,使用命令“d DS:0 40.”,把这些数据记录下来。 假设 BX 和 SI 中的内容分别是 12 和 17,判断一下程序运行后的结果是什么?跟踪程序,记录 AX 寄

    10、存器中的内容,与你预计的结果相符么?5. 堆栈.(i) 将程序输入内存中以地址 CS:0000 为起始的代码段中:MOV BX,22 MOV AX,33PUSH AXPUSH BXMOV AX,0MOV BX,0POP AXPOP BXINT 3跟踪程序,记录发现的变化。不要忘记运行前要把 IP 的内容变为 0。步骤 AX BX SP 堆栈内容1 _ _ _ _2 _ _ _ _3 _ _ _ _4 _ _ _ _5 _ _ _ _6 _ _ _ _7 _ _ _ _8 _ _ _ _增加什么语句,能够使 AX 和 BX 的内容在程序运行后被恢复。(ii) 重启 Debug将指令 INT 3 在代码段地址 CS:100 中输入。输入 “r.” 记录堆栈段和代码段的参数:SS:_ SP:_ CS:_ IP:_将堆栈段中 SS:FFE0 FFFF 的内容显示出来,记录堆栈段中的有效数据。地址 : _内容 : _执行 INT 3 指令,引起 CPU 的软件中断。相应的中断程序被调用。中断服务程序的最后一条指令是 IRET,它告诉 CPU 中断服务结束。一步步跟踪 INT 3 直到 IRET 指令被执行。注意寄存器 SP 中内容的变化,记录被推入堆栈的内容,以及中断程序终止时,弹出命令将什么内容送到什么地方?根据观察,能找到 INT 3 中断向量的内容么?中断服务程序的起始地址是什么?


    注意事项

    本文(汇编语言实验.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开