(完整版)华电微机原理与技术汇编语言题目及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一微机原理与接口技术汇编题目
(1)数据块传送
1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。

提示:
1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H)
DA TA SEGMENT
ORG 2000H
DB 1,,2,3,4,5,6,7,8,9,10 ; DB定义字节数据
ORG 3000H
DB 10 DUP(0); 预留10个单元存放结果,初值预定义为0
DA TA ENDS
定义的内存单元为:
2、定义字数据命令为:DW
DA TA1 SEGMENT
DW 1,,2,3,4,5,6,7,8,9,10 ; DW定义字数据DA TA1 ENDS
1、已知0~15的平方值表,查表求X(X是0到15 间任一数)的平方值,送到Y单元,用两种方法。

2、已知0~255的平方值表,查表求X的平方值,送到Y单元。

提示:
0到15的平方表,每个平方值为一个字节;
0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。

一个字为两个字节,在内存中低位在前,高位在后。

1、计算多字节数据1122334455667788H与99AABBCCDDEEFF00H的和。

2、计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和
3、计算10个字数据的和(数据自己定义)。

提示;
1、多字节数据在内存中存放,低位在前,高位在后
DA T1 DB 88H,77H,66H,55H,44H,33H,22H,11H
DA T2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H
DA T3 DB 9 DUP(0)
2、BCD十进制加法
二进制加法指令: ADD
BCD十进制加法: ADD
DAA;十进制调整指令,仅对AL 作为加法的累加和寄存器进行调整
(4)计算表达式的值
1 计算表达式)2/()7*)((+-=Y Y X Z 的值,已知X=10,Y=5。

提示:
X DB 10 Y DB 5 Z DB ?
AL=X-Y BL=7
AX=AL*BL BH=Y+2
AL=AX/BH 的商 AH=AX/BH 的余数
(5)找最大、最小数
1、找出2040H 单元和2041H 单元的大数,并送2042H 单元(数据自己定义)
2、找出10个数(8位数)里的最大数(数据自己定义)
3、找出10个数(16位数)里的最小数(数据自己定义) (6)统计正数、负数个数
1、找出10个数(8位数)里的正数个数(数据自己定义)
2、找出10个数(16位数)里的负数个数(数据自己定义) (7)数据块比较
1、分别在FARD1和FARD2单元开始存放了10个字节数据,编程比较是否一致(数据自己定义)。

2、分别在FARD1和FARD2单元开始存放了10个字数据,编程比较是否一致(数据自己定义)。

(8)逻辑运算
1、在数据段3000H单元开始存放了数字0~9的ASCII码,求对应的十进制数字并存放到
3500H开始的单元;再将3500H开始的十进制数字转换为对应的ASCII码,存放到3800H 开始单元。

提示:
数字转换方法:
例如:数字‘5‘的ASCII 为35H(0011 0105B),想办法变为05H(00000105B),存入对应的单元,然后再将05H(00000105B),变为35H(0011 0105B) 存入对应的单元。

DA TA SEGMENT
ORG 3000H
DB ‘0123456789’ ; DB定义字节数据
ORG 3500H
DB 10 DUP(?); 预留10个单元存放结果
ORG 3800H
DB 10 DUP(?); 预留10个单元存放结果
DA TA ENDS
(9)输入输出
1、在显示器上输出字符串‘HELLO!’。

2、从键盘输入一组字符串,存入到BUFFER数据区(自己定义)中。

3、将十进制数25从显示器上输出。

4、将数据段中的10个个位数数据从显示器上输出。

以上各题做为练习使用!
提示:
1、显示字符串
2、键盘输入一组字符串
方法 1 用10号调用,
方法2 用1号调用,设置循环次数
3、将十进制数25从显示器上输出。

想办法把25的十位和个位拆开,再分别变为ASCII,先显示 2 ,后显示5
3、将数据段中的10个个位数数据从显示器上输出。

从数据段中直接定义10个个位数据,取出数据后,变为变为ASCII,显示
二实验过程参考步骤
题目
1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。

源程序:数据定义
DA TAS SEGMENT
ORG 2000H
DA TA1 DB 1,2,3,4,5,6,7,8,9,10
ORG 3000H
DA TA2 DB 10 DUP (0)
DA TAS ENDS
CODES SEGMENT
START:MOV AX,DA TAS
MOV DS, AX
MOV SI, 2000H
MOV DI, 3000H
MOV CX, 10
NEXT:MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
DEC CX
JNZ NEXT
MOV AH, 4CH
INT 21H
CODES ENDS
END START
运行前内存分布:
程序运行前2000H:01 02 03 04 05 06 07 08 09 0A
3000H:00 00 00 00 00 00 00 00 00 00
程序运行后2000H:01 02 03 04 05 06 07 08 09 0A
3000H:01 02 03 04 05 06 07 08 09 0A
程序调试过程:
第一步:输入源程序,如图1所示。

图1 输入源程序
第二步:保存源文件(注:保存到自己的目录中)。

第三步:将汇编源程序汇编成目标文件:执行菜单中“运行—编译成目标文件”命令,若无语法错误,则在下方窗口中显示“编译成功”,如图2所示;若有错误,可根据提示找出错误所在行,改正后,重新执行此命令。

图2 将汇编源程序编译成目标文件图3 将目标文件连接成EXE文件第四步:将第三步生成的目标文件连接成可执行文件:执行菜单中“运行—生成可执行文件”命令,若无连接错误,则在下方显示“生成EXE文件成功”,如图3所示;若有错误,可根据提示找出错误所在行,改正后,则从第三步开始继续调试。

第五步:对生成的EXE文件进行调试,查看结果,步骤如下:
(1)执行菜单中的“运行—DEBUG调试”命令,打开DEBUG窗口,如图4所示。

图4 DEBUG调试窗口
(2)输入命令“U”,将EXE文件(二进制机器码)反汇编成汇编程序,如图5所示。

其中,最左边一列是代码段中指令的地址,为逻辑地址的形式,其段基址为汇编程序分配,段内偏移地址默认从零开始;第二列为二进制机器码(以十六进制形式显示),与第三列中的汇编语句相对应。

查看第三列,找到自己所有的程序,一般到结束语句MOV AH,4CH INT 21H 结束;若没有反汇编完所有的程序,则再执行一个“U”命令,直到所有程序均被反汇编出来。

图5 输入命令U对EXE文件进行反汇编,得到汇编程序
(3) 应用“G”命令运行程序,G命令格式:G=起始地址断点地址;起始地址为开始执行指令的地址(若为段内,可只写偏移地址),断点地址为停止执行语句的地址。

例如,执行例题代码段内所有程序时,命令可为G=0000 0017,0000为第一条指令的偏移地址,0017为指令MOV AH, 4CH的地址,到此处结束本程序的执行。

如图6所示。

图6 运行G命令执行程序
运行G命令后,程序即在断点处停止执行,此时显示出CPU内所有寄存器的当前值。

若要查看运行后内存单元的值,可应用下面的命令D。

(4) 查看结果
(A)查看内存单元存放的结果:
使用命令D,格式:D 段地址:偏移地址。

例如,查看本程序的运行结果,如图7所示。

图7D命令查看内存单元的值
其中,段地址和偏移地址均要以实际运行程序的状态来输入。

仅记录你的运行程序涉及的内存单元,及涉及到的CPU寄存器内容,不能记录屏幕显示的所有内容
(B)其它命令,请查询软件屏幕左边提示信息
(5)最后,输入命令Q退出DEBUG程序。

如图8所示。

图8命令Q退出DEBUG程序
三实验报告格式要求
一题目:将数据段DA TA1中的10个字数据(16位数)传送到数据段DATA2中
1.流程图:
2.源程序(要求有完整的数据段、代码段):
3.运算前内存分布:
4.运算后内存分布:
5.连续运行G=
6.查看结果使用命令:
7.记录结果:
8.存在问题及体会
二计算10个字数据的和(数据自己定义)。

三统计10个数(16位数)里的正、负数及零的个数(数据自己定义)。

提示:设置寄存器:
计数器
正数个数
负数个数
零的个数
10个数的首地址
取数据,进行比较,记录到对应的寄存器中
四在数据区DAT中存放有15个字数据,请利用冒泡法从小到大进行排列,并将结果存入变量RESULT开始的区域(数据自己
定义)。

五通过键盘任意输入一个字符串,保存在数据段中STR开始的区域,并统计其中的数字字符、英文字符的个数分别存入变量NUM、ENG中。

提示:
数字 ASCII码值是30H到39H
英文字符ASCII码值大写从41H开始,小写从61H开始
注意事项:
1.上机前应将每题的前2个要求完成,未完成者不得上机,并按
缺一次实验成绩记录!
2.下机时应将每题的后6个要求补充完整并上交。

相关文档
最新文档