没有合适的资源?快使用搜索试试~ 我知道了~
汇编语言设计实例解析
需积分: 16 38 下载量 89 浏览量
2011-10-11
12:46:26
上传
评论 2
收藏 1.15MB PDF 举报
温馨提示
微机汇编语言设计实例解析 包含汇编语言例程 调试工具使用方法等内容
资源推荐
资源详情
资源评论
- 1 -
目 录
8086 汇编语言上机调试方法 ………………………………………………( 2 )
软件部分实验
实验一 两个多位十进制数相加的实验………………………………… ( 11 )
实验二 两个数相乘的实验 ………………………………………………( 15 )
实验三 二进制到 BCD 转换 ………………………………………………( 18 )
实验四 二进制到 ASCII 码转换 …………………………………………( 20 )
实验五 内存块移动 ………………………………………………………( 22 )
实验六 数据排序 …………………………………………………………( 24 )
实验七 字符匹配程序 ……………………………………………………( 26 )
实验八 字符串匹配程序 …………………………………………………( 30 )
实验九 从键盘输入数据并显示的程序 …………………………………( 34 )
实验十 字符和数据的显示程序 …………………………………………( 38 )
实验十一 将键盘输入的小写字母转换成大写字母的程序 ………………( 42 )
硬件部分实验
实验一 8255 可编程输入、输出接口实验 ……………………………( 46 )
实验二 并行口控制的模拟交通灯实验 ………………………………( 51 )
实验三 点阵 LED 的显示实验 …………………………………………( 56 )
实验四 8253 可编程计数器实验 ………………………………………( 61 )
实验五 8253 可编程定时器实验 ………………………………………( 66 )
实验六 电子琴(8253 定时器应用实验) ……………………………( 68 )
实验七 六位七段数码管显示 …………………………………………( 73 )
实验八 键盘扫描及显示的接口实验 …………………………………( 79 )
实验九 8259 可编程外部中断实验 ……………………………………( 86 )
实验十 A/D0809 模数转换实验 ………………………………………( 92 )
实验十一 D/A0832 数模转换实验 ……………………………………( 99 )
实验十二 8251A 串行通讯实验 …………………………………………( 104 )
实验十三 温度测量实验 ………………………………………………( 112 )
附录 1 ASCⅡ编码表 ……………………………………………( 117 )
附录 2 DOS 功能调用( INT 21 )一览表 ………………………( 119 )
附录 3 动态调试程序 DEBUG .EXE 的使用 …………………( 124 )
附录 4 实验系统的地址空间分配表 ………………………………( 135 )
附录 5 WAVE 仿真器开发环境简介 ………………………………( 136 )
- 2 -
8086 汇编语言上机调试方法
1、用鼠标点击“网上邻居”;
2、输入
ftp://202.116.6.197
3、将服务器上“MASM”文件夹中的所有内容复制到 E:盘上。
4、进入 E:\MASM\UltraEdit v9.00c\文件夹创建“Uedit32.exe”文件的快捷方式,将
“Uedit32 快捷方式”复制到桌面。
5、 双击“Uedit32 快捷方式”启动文本编辑软件 UltraEdit,输入汇编语言程序( 注
意:在最后一行的“END”输入完后要按一次回车键,保存源文件的扩展名一定要是
ASM 如: EXAMPLE.ASM )。
6、“编译”、“连接”和“调试程序”程序。
方法一、
①、双击“Uedit32 快捷方式”启动文本编辑软件 UltraEdit,打开\MASM\MASM1 文件
夹中的“Example.ASM”源程序。
②、移动光标到 UltraEdit 工具栏的“高级(A)” 处 , 点击里面的“编译”,若无错误
则继续点击“连接”和“调试程序”,“调试程序”是直接进入“DEBUG” 中
对汇编语言程序进行调试。
方法二、
①、用 Windows XP 的命令行方式(在运行程序栏中输入 command 并按回车键)
进入\MASM\MASM1 文件夹,文件夹中有 MASM.EXE, LINK.EXE , DEBUG.EXE 3 个主
要的工具软件和 Example.ASM 源程序。
②、在 DOS 提示符下进行 汇编 、连接 、动态调试 等操作。
例如: 对源文件 EXAMPLE.ASM 进行的操作
E:\MASM\MASM1\MASM EXAMPLE; 汇编源程序操作
E:\MASM\MASM1\LINK EXAMPLE; 连接并生成扩展名为 .EXE 的可执行文件
E:\MASM\MASM1\DEBUG EXAMPLE.EXE 对可执行文件进行调试
7、“ DEBUG”中常用的调试命令
U - 反汇编命令
用法: -U 代码段地址:起始偏移地址 如:-U CS:100
D - 显示内存中的数据命令
用法: -D 数据段地址:存放数据的偏移地址 如:-D DS:00 20
T - 单步执行程序命令
用法: -T 要执行的指令条数 如:-T 3
G - 连续执行程序命令
用法: -G=代码段地址:指令的起始偏移地址 指令的结束偏移地址
如: -G=CS:100 106
注意: 结束地址一定要是操作码的所在地址
R - 查看和修改寄存器数据命令
用法: -R 回车 如:-R AX
F - 对内存单元填充数据命令
用法: -F 数据段地址:偏移首地址 偏移未地址 填入的数据
如: -F DS:100 120 ff
Q - 退出”DEBUG“ 应用程序命令
- 3 -
8、应用例子及操作步骤
题目要求:将 AX 中的十六进制数拆为三个 BCD 码, 并存入 Result_1, Result_2,
Result_3 的三个单元中。
⑴ 、输入源程序
DATA SEGMENT ; 数据段
RESULT_1 DB 1
RESULT_2 DB 1
RESULT_3 DB 1
DATA ENDS
STACK SEGMENT STACK ; 堆栈段
STA DB 64 DUP(0)
STACK_TOP DB 0
STACK ENDS
CODE SEGMENT ; 代码段
ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK
START:
; 程序开头必须要有的五条指令
MOV AX, DATA
MOV DS, AX ; 设置数据段
MOV AX, STACK
MOV SS, AX ; 设置堆栈段
LEA SP, STACK_TOP ; 设置栈顶指针
; 程序的中间部分
MOV AX, 587
MOV CL, 100
DIV CL
MOV RESULT_1, AL ; 除以 100, 得百位数
MOV AL, AH
MOV AH, 0
MOV CL, 10
DIV CL
MOV RESULT_2, AL ; 余数除以 10, 得十位数
MOV RESULT_3, AH ; 余数为个位数
; 程序结束必须要有的两条指令
MOV AX,4C00H ;
INT 21H ;
CODE ENDS
END START ; 最后一行要按回车键
- 4 -
⑵ 、对源程序进行汇编产生 OBJ 文件
E:\MASM\MASM1>MASM EXAMPLE; ( 输入 MASM EXAMPLE; 并按回车键 )
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
51514 + 408822 Bytes symbol space free
0 Warning Errors
0 Severe Errors
⑶、对目标文件进行连接产生 EXE 文件
E:\MASM\MASM1>LINK EXAMPLE; ( 输入 LINK EXAMPLE; 并按回车键 )
Microsoft (R) 8086 Object Linker Version 3.05
Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.
⑷、对可执行文件进行调试
E:\MASM\MASM1>DEBUG EXAMPLE.EXE ( 输入 DEBUG EXAMPLE.EXE 并按回车键 )
-U CS:0000 用反汇编命令“U 代码段地址:起始偏移地址” 显示出程序的表示符
-U 0 2C ( 按回车键 )
160D:0000 B80716 MOV AX,1607 ; 程序的起始地址是 160DH:0000H
160D:0003 8ED8 MOV DS,AX
160D:0005 B80816 MOV AX,1608
160D:0008 8ED0 MOV SS,AX
160D:000A 8D264100 LEA SP,[0041]
160D:000E B84B02 MOV AX,024B
160D:0011 B164 MOV CL,64
160D:0013 F6F1 DIV CL
160D:0015 A20000 MOV [0000],AL
160D:0018 8AC4 MOV AL,AH
160D:001A B400 MOV AH,00
160D:001C B10A MOV CL,0A
160D:001E F6F1 DIV CL
160D:0020 A20100 MOV [0001],AL
160D:0023 88260200 MOV [0002],AH
160D:0027 B8004C MOV AX,4C00 ; 程序的结束地址是 160DH:0027H
160D:002A CD21 INT 21
160D:002C 9E SAHF
-
执行程序前观察内存中的数据
-D DS:0000 ; 用显示内存中的数据命令 D 显示内存中的数据。
命令格式:“D 数据段地址:存放数据的偏移地址 ”
-D DS:0 30 ( 按回车键 )
15F7:0000 CD 20 00 A0 00 9A F0 FE-1D F0 3C 03 5D 0F 77 03 . ........<.].w.
15F7:0010 5D 0F 04 03 5D 0F 4C 0F-01 01 01 00 02 FF FF FF ]...].L.........
15F7:0020 FF FF FF FF FF FF FF FF-FF FF FF FF E6 15 4C 01 ..............L.
-
- 5 -
连续执行程序
-G=CS:0000 0027 ;( 按回车键 )
命令格式:G=代码段地址:指令的起始偏移地址 指令的结束偏移地址
AX=0708 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000
DS=1607 ES=15F7 SS=1608 CS=160D IP=0027 NV UP EI PL NZ NA PO NC
160D:0027 B8004C MOV AX,4C00
-
; 执行完程序后,显示出 CPU 内的各寄存中的数据和当前的标志状态(见表 1-1 所
示)
表 1-1 标志状态
标 志 置位(SET) 复位(CLEAR)
溢出 overflow OV (溢出) NV (无溢出)
方向 Direction DN (减) UP (增)
中断 interrupt EI (启用) DI (禁用)
符号 Sign NG (负) PL (正)
零 Zero ZR (零) NZ (非零)
辅助进位 Anxigiary carry AC (有) NA (无)
奇偶 Parity PE (偶校验)
PO (奇校验)
进位 carry CY (有进位)
NC (无进位)
执行程序后观察内存中的数据( 结果 )
-D DS:0000 ; 用显示内存中的数据命令 “ D 数据段地址:存放数据的偏移地址”显
示内存中的数据
-D DS:00 ; 观察内存中的数据
1607:0000 05 08 07 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1607:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1607:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-
-R IP 修改 IP 寄存器中的数据
IP 0027 显示修改前的数据
:00 输入修改的数据
-
-T ;单步执行程序命令 (执行一条指令)
AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000
DS=1607 ES=15F7 SS=1608 CS=160D IP=0003 NV UP EI PL NZ NA PO NC
160D:0003 8ED8 MOV DS,AX
-
剩余139页未读,继续阅读
资源评论
mesirry
- 粉丝: 2
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CC2530无线zigbee裸机代码实现液晶LCD显示.zip
- CC2530无线zigbee裸机代码实现中断唤醒系统.zip
- 车辆、飞机、船检测24-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于51单片机的火灾烟雾红外人体检测声光报警系统(protues仿真)-毕业设计
- 高仿抖音滑动H5随机短视频源码带打赏带后台 网站引流必备源码
- 车辆、飞机、船检测25-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 四足机器人示例代码pupper-example-master.zip
- Python人工智能基于深度学习的农作物病虫害识别项目源码.zip
- 基于MIT mini-cheetah 的四足机器人控制quadruped-robot-master.zip
- 菠萝狗四足机器人py-apple-bldc-quadruped-robot-main.zip
- 基于51单片机的篮球足球球类比赛计分器设计(protues仿真)-毕业设计
- 第3天实训任务--电子22级.pdf
- 基于FPGA 的4位密码锁矩阵键盘 数码管显示 报警仿真
- 车辆、飞机、船检测5-YOLO(v5至v11)、COCO、CreateML、Paligemma、VOC数据集合集.rar
- 河南大学(软工免浪费时间)
- NOIP-学习建议-C++
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功