华电微机原理与技术汇编语言题目及答案.docx
- 文档编号:25911272
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:12
- 大小:34.27KB
华电微机原理与技术汇编语言题目及答案.docx
《华电微机原理与技术汇编语言题目及答案.docx》由会员分享,可在线阅读,更多相关《华电微机原理与技术汇编语言题目及答案.docx(12页珍藏版)》请在冰豆网上搜索。
华电微机原理与技术汇编语言题目及答案
微机原理与接口技术汇编题目
(1)数据块传送
2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。
提示:
0000H)
1、指定数据的起始地址:
(如果不指定起始地址,则起始地址为
DATASEGMENT
ORG2000H
DB1,,2,3,4,5,6,7,8,9,10;DB定义字节数据
ORG3000H
DB10DUP(O);预留10个单元存放结果,初值预定义为0
DATAENDS
定义的存单元为:
地址
容(H)
2000H
1
2001H
2
2002H
3
2003H
4
2004H
5
2005H
6
2006H
7
2007H
8
2008H
9
2009H
0A
2、定义字数据命令为:
DW
DATA1SEGMENT
DW1,,2,3,4,5,6,7,8,9,10;DW定义字数据
DATA1ENDS
一个字为两个字节,在存中低位在前,高位在后。
地址(H)
容(H)
0000
01
0001
00
0002
02
0003
00
0004
03
0005
00
0006
04
0007
00
0008
05
0009
00
000A
06
000B
00
000C
07
000D
00
000E
08
000F
00
0010
09
0011
00
0012
0A
0013
00
(2)查表
1已知0~15的平方值表,查表求X(X是0到15间任一数)的平方值,送到Y单元,用两种方法。
2、已知0~255的平方值表,查表求X的平方值,送到Y单元。
提示:
0到15的平方表,每个平方值为一个字节;
0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。
一个字为两个字节,在存中低位在前,高位在后。
(3)计算
1计算多字节数据1122334455667788H与99AABBCCDDEEFF00H的和。
2、计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和
3、计算10个字数据的和(数据自己定义)。
提示;
1、多字节数据在存中存放,低位在前,高位在后
DAT1DB88H,77H,66H,55H,44H,33H,22H,11H
DAT2DB00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H
DAT3DB9DUP(O)
地址
数据
DAT1
0000
88
0001
77
0002
66
0003
55
0004
44
0005
33
0006
22
0007
11
DAT2
0008
00
0009
FF
000A
EE
000B
DD
000C
CC
000D
BB
000E
AA
000F
99
DAT3
0010
0011
0012
0013
0014
0015
0016
0017
0018
2、BCD十进制加法
二进制加法指令:
ADD
BCD十进制加法:
ADD
DAA;十进制调整指令,仅对AL作为加法的累加和寄存器进行调整
(4)计算表达式的值
1计算表达式Z((XY)*7)/(Y2)的值,已知X=10,Y=5。
提示:
XDB10
YDB5
ZDB?
AL=X-Y
BL=7
AX=AL*BL
BH=Y+2
AL=AX/BH的商
AH=AX/BH的余数
兔乘法
八'-Am.无符号数乘法-i\nl有符号数乘法・例
AfULDL土AX^AL*DL
rxruLbx:
dxax「axtx
MULBYTEPTR[SI|;AX^-AL*(I>S*16+SI)
(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(00110105B),想办法变为05H(00000105B),存入对应的单元,然后再将05H(00000105B),变为35H(00110105B)存入对应的单元。
DATA
SEGMENT
ORG
3000H
DB
'0123456789
'DB定义字节数据
ORG
3500H
DB
10DUP(?
);
预留10个单兀存放结果
ORG
3800H
DB
10DUP(?
);
预留10个单兀存放结果
DATA
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个字节中。
源程序:
数据定义
DATASSEGMENT
ORG2000H
DATA1DB1,2,3,4,5,6,7,8,9,10
ORG3000H
DATA2DB10DUP(0)
DATASENDS
CODESSEGMENT
START:
MOVAX,DATAS
MOVDS,AX
MOVSI,2000H
MOVDI,3000H
MOVCX,10
NEXT:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
运行前存分布:
程序运行前2000H:
0102030405060708090A
3000H:
00000000000000000000
程序运行后2000H:
0102030405060708090A
3000H:
0102030405060708090A
程序调试过程:
第一步:
输入源程序,如图1所示。
图1输入源程序
第二步:
保存源文件(注:
保存到自己的目录中)
第三步:
将汇编源程序汇编成目标文件:
执行菜单中“运行一编译成目标文件”命令,若无
语法错误,则在下方窗口中显示"编译成功”,如图2所示;若有错误,可根据提示找出错
误所在行,改正后,重新执行此命令。
图2将汇编源程序编译成目标文件图3将目标文件连接成EXE文件
第四步:
将第三步生成的目标文件连接成可执行文件:
执行菜单中“运行一生成可执行文件”
命令,若无连接错误,则在下方显示“生成EXE文件成功”,如图3所示;若有错误,可
根据提示找出错误所在行,改正后,则从第三步开始继续调试。
第五步:
对生成的EXE文件进行调试,查看结果,步骤如下:
(1)执行菜单中的“运行一DEBUG调试”命令,打开DEBUG窗口,如图4所示。
图4DEBUG调试窗口
(2)输入命令“U”将EXE文件(二进制机器码)反汇编成汇编程序,如图5所示。
其中,最左边一列是代码段中指令的地址,为逻辑地址的形式,其段基址为汇编程序分配,段偏移地址默认从零开始;第二列为二进制机器码(以十六进制形式显示),与第
三列中的汇编语句相对应。
查看第三列,找到自己所有的程序,一般到结束语句MOVAH,4CHINT21H结
束;若没有反汇编完所有的程序,则再执行一个“U”命令,直到所有程序均被反汇编出
来。
图5输入命令U对EXE文件进行反汇编,得到汇编程序
(3)应用“G”命令运行程序,G命令格式:
6=起始地址断点地址;起始地址为开始执行指令的地址(若为段,可只写偏移地址),断点地址为停止执行语句的地址。
例如,执行
例题代码段所有程序时,命令可为G=00000017,0000为第一条指令的偏移地址,0017为
指令MOVAH,4CH的地址,到此处结束本程序的执行。
如图6所示。
图6运行G命令执行程序
运行G命令后,程序即在断点处停止执行,此时显示出CPU所有寄存器的当前值。
若
要查看运行后存单元的值,可应用下面的命令D。
(4)查看结果
(A)查看存单兀存放的结果:
使用命令D,格式:
D段地址:
偏移地址。
例如,查看本程序的运行结果,如图7所
示。
图7D命令查看存单元的值
其中,段地址和偏移地址均要以实际运行程序的状态来输入。
仅记录你的运行程序涉及的存单元,及涉及到的CPU寄存器容,不能记录屏幕显示
的所有容
(B)其它命令,请查询软件屏幕左边提示信息
(5)最后,输入命令Q退出DEBUG程序。
如图8所示。
图8命令Q退出DEBUG程序
一题目:
将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中
1.流程图:
2.源程序(要求有完整的数据段、代码段):
3.运算前存分布:
4.运算后存分布:
5.连续运行G=
6.查看结果使用命令:
7.记录结果:
8.存在问题及体会
2计算10个字数据的和(数据自己定义)。
3统计10个数(16位数)里的正、负数及零的个数(数据自己定义)。
提示:
设置寄存器:
计数器
正数个数
负数个数
零的个数
10个数的首地址
取数据,进行比较,记录到对应的寄存器中
4在数据区DAT中存放有15个字数据,请利用冒泡法从小到大
进行排列,并将结果存入变量RESULTS始的区域(数据自己
定义)
5通过键盘任意输入一个字符串,保存在数据段中STR开始的区域,并统计其中的数字字符、英文字符的个数分别存入变量
NUMENGK
提示:
数字ASCII码值是30H到39H
英文字符ASCII码值大写从41H开始,小写从61H开始
注意事项:
1.上机前应将每题的前2个要求完成,未完成者不得上机,并按缺一次实验成绩记录!
2.下机时应将每题的后6个要求补充完整并上交。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 技术 汇编语言 题目 答案