汇编语言实验
更新时间:2023-12-01 22:47:01 阅读量: 教育文库 文档下载
汇编语言程序设计 实验一
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? ”来显示数据段中 80H 字节数据。观察与前面的数据有无不同。
输入 “d 1900:0100? ”和“d 1ff0:0100? ”来显示两个存储段中的内容。比较其中 2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
2.输入机器码,使用单步和断点 退出 Debug,再重新启动 Debug。
输入 “r? ”观察 CPU 的状态,下一条指令是什么?
使用两种方式输入一段程序,第一种方式:直接输入机器码。
输入 “u? ”来显示程序段中的指令序列。然后输入 “d CS:100? ” 来显示代码段中的数据。观察显示内容。
“u CS: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? ”再输入 “100? ”,可以将寄存器 IP 中的内容置为 “100H”。再输入“r? ”观察 CPU 的状态,然后反复输入 “t? ” 跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另外,说明这段程序完成什么任务?
重新把寄存器 IP 的内容变为 100H,不使用跟踪命令 “t”,改用“g 10c”来完成程序。
程序中还可以加断点,做法是在程序中加入 “int 3” 这条指令。如果这条指令在程序的末尾,我们可以通过输入 “g? ” 来完成运行程序。这样就不需像上面需要告诉 Debug 程序最后机器码字节的地址偏移量了。“int 3”是 Debug 中很有效的返回控制指令。把这条指令放在程序中必要的位置上,在这条指令后面的代码在不允许时就不会运行。
3.ASCII 字符码,从键盘输入,从显示器输出
(i) 标准 ASCII ( American Standard Code for Information Interchange ) 码使用 7- bit 二进制数来代表字符。一般文本信息经常用 ASCII 编码。 使用命令 “a CS:100? ”, 输入下面的代码: MOV BX,0 MOV [BX],BL INC BX CMP BH,1 JNE 103 INT 3
使用 “d DS:0 100? ”命令,显示程序运行前相应内存段中的数据。运行上面的程序来填充 DS:0000-00FF 这段内存中的内容。再次输入 “d DS:0 100? ”命令来显示填充的内容。在窗口的右边,可以看到相应的ASCII码字符。
如果填充的内容不是字符,显示就用点表示。用类似方法,如何将字符串“How are you?”写入计算机内存呢?
(ii) 计算机的 BIOS ( Basic Input / Output System ) 程序有很多子程序,用来通过标准外设处理输入和输出,比如,键盘和显示器。
BIOS 的程序都可以通过称为系统中断的特殊指令被调用。例如: INT 16H 返回值是把下一个键盘输入值送入寄存器 AL
INT 10H 当 BH = 0 时,将光标移到由寄存器 DH 和 DL 内容所指定的行和列的位置上 INT 21H 当 AH = 2 时,将 DL 中的内容作为 ASCII 码的字符显示出来
INT 21H 当 AH = 9 时,将位于 DS:DX 的内容显示为字符串 ( 一个 ASCII 码序列由 $ 符作结束符)。
(ii)(a) 将下列代码输入程序段 CS:0100 中: MOV AH,0 INT 16H INT 3 JMP 100
使用“u CS:100 110? ” 命令,将程序转换为机器码。其中 “JMP 100”的机器码是 “EBF9”。如果使用的是相对寻址方式,我们可以猜测出机器码中“F9”的含义么?相对寻址方式比绝对地址方便的地方是什么?
重置 IP 的内容为 100H,再输入“g? ”来执行程序。程序中断时,输入字母“B”,检查寄存器 AL 中的内容为: _________
重复上面的动作,但输入不同字母,记录下每次 AL 中的内容,能不能判断出来,这段程序的功能是什么?
(ii)(b) 将下面的代码输入 CS:200 中: MOV BH,0 MOV DL,0 MOV DH,0 MOV AH,2 INT 10 MOV DX,0 MOV AH,9 INT 21 INT 3
通过命令 “e DS:0 68 65 6C 6C 21 24?.”在内存数据段中输入了一个字符串,将 IP 设为 200,输入 “g?.” 来运行程序,在屏幕左上角能找到输入的字符串是什么:_____________ 这个程序是用来做什么的? _____________________________________________________ _____________________________________________________
正在阅读:
汇编语言实验12-01
精编工匠精神学习个人心得体会优选例文08-04
设备巡视系统使用说明书03-21
凝胶过滤层析法测定蛋白质分子量05-22
博物馆方案范本05-29
记叙文阅读及答案05-14
去日本自助旅游的注意事项09-26
商品学要点02-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 汇编语言
- 实验
- 2017年脱贫攻坚工作总结及2018年工作计划
- 介入诊疗技术操作规范
- 员工迟到早退制度
- 家庭火灾防控应急预案
- 风时程生成程序技术说明
- 八年级历史上册 第三单元新民主主义革命的兴起知识总结 华东师大版
- 山东河北河南电力设计院汇总 精品
- 阿呈第五课传奇版本制作GM必学知识
- 最新部编版一年级看拼音写词语带田字格
- 安全检查工作计划
- 一道初二数学难题
- 精品解析:全国百强校河南省实验中学2019届九年级上期期中数学试卷(解析版)
- 锅炉巡检题库
- 拉丁舞说课稿1
- 乐学仕暑期数学八年级提优讲义反比例函数(六)
- Matlab讲义 连续时间系统的复频域分析
- 彬县教育局关于转发《全县校园及周边环境集中整治工作实施方案》的通知
- 中考英语试题汇编感叹句、倒装句和复合句
- 护理学基础习题
- 幼儿园特色美术计划范文与幼儿园特色问题的调研报告汇编