汇编语言实验题目及测试截图456Word格式文档下载.docx
- 文档编号:21251810
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:83.65KB
汇编语言实验题目及测试截图456Word格式文档下载.docx
《汇编语言实验题目及测试截图456Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言实验题目及测试截图456Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
.startup
shuru:
开始输入月份编号
leadx,msg1
movah,09h
int21h;
显示提示信息
leadx,buffer
movah,0ah
输入月份数值
cmpactlen,0;
若没有输入月份则转出错处理
jeshuruerr
;
以下判断输入月份是否合法
leadi,string
cmpactlen,2
jeda10;
若输入的是2位数月份值则转到da10标号处执行
moval,string;
若只输入1位数字月份值,则读出该值
andal,0fh;
把ASCII码转换为对应数字
jmpjisuan
da10:
moval,string
把月份数值十位的ASCII码转换为对应数字(如12月的1字)
movbl,10
mulbl
andstring[1],0fh;
把月份数值个位的ASCII码转换为对应数字
addal,string[1];
十位加上个位(如12月)
jisuan:
以下计算偏移地址
cmpal,1;
比1小是非法月份
jbshuruerr;
若月份值小于1则转出错处理
cmpal,12
jashuruerr;
比12大也是非法月份
subal,1;
月份值减1
shlal,1
shlal,1;
月份再乘4对应了MON字符串中从首地址开始的字符相对位置
xorah,ah;
1月份从0位置开始即JAN,...5月份从位置16开始即MAY
leasi,mon;
找到被显示月份字符的位置
addsi,ax
movcx,3
output:
movdl,[si];
输出对应月份英文缩写
movah,2
int21h
incsi
loopoutput
.exit0
shuruerr:
leadx,msg2;
输入出错时提示出错,并转到程序起始处重新执行
movah,09h
jmpshuru
end
2、程序汇编通过后,运行程序察看输出结果。
3、程序运行中不输入月份值(直接回车),或输入非法月份值,观察程序执行的情况。
实验六分支与循环混合结构程序设计
1、掌握利用.IF语句实现分支程序的设计方法;
2、掌握利用.REPEAT语句实现循环程序的设计方法;
3、掌握DIV指令的使用特点;
4、掌握地址表的定义和使用方法。
实现成绩单的分等级统计功能,在数据段中有成绩单的定义,并包含有若干个分数,程序根据成绩单数据的个数循环分别统计个分数段成绩的个数,最后输出个等级段的分数个数。
要求:
成绩单数据少于100字节,输出的每个档次统计值按两位数显示。
HANDB42,62,68,70,79,82,85,90,95,99,66,88,78,90,98,200;
成绩单
countequ$-han;
记录数据个数
MEMDB6dup(0);
分别用于存放各分数段成绩的个数
scoreedb10,13,'
Score"
E"
countis:
定义各分数段的提示信息
scoreddb10,13,'
D"
scorecdb10,13,'
C"
scorebdb10,13,'
B"
scoreadb10,13,'
A"
scoreodb10,13,'
Other"
tabledwscoreo,scoree,scored,scorec,scoreb,scorea;
定义地址表
MOVCX,count
movsi,0
begin:
统计各个分数段的成绩个数
.ifhan[si]<
60
addmem[1],1
.elseifhan[si]>
=60&
&
han[si]<
=69
addmem[2],1
=70&
=79
addmem[3],1
=80&
=89
addmem[4],1
=90&
=99
addmem[5],1
.else
addmem[0],1
.endif
loopbegin
movcx,6
.repeat;
开始循环
movsi,cx
decsi
addsi,si;
计算地址表中对应地址项与提示信息的对应关系
movdx,table[si]
movah,9
xorah,ah
movsi,cx
MOVal,mem[si-1];
读出统计好的一个数值(此处只能处理99以下的)
movbl,10
divbl;
ax/10
movmem[si-1],ah;
AH为余数是个位,暂时存放回该内存单元
movdl,AL;
al为商是十位
adddl,30h;
转换为ASCII码
MOVAH,2
INT21H;
以十进制形式显示十位
movdl,mem[si-1]
adddl,30h
再显示个位
.untilcxz;
CX自动减1,减到0结束循环
END
3、修改成绩单的内容再重新汇编和运行程序,观察程序的结果变化情况。
把数据修改为22,32,48,50,69,72,85,40,75,89,66,58,48,70,78,200
4、利用DEBUG工具的U命令反汇编可执行程序,观察.IF语句及.REPEAT语句所对应的汇编指令情况。
5、利用MASM的命令行,汇编源文件并生成.LST列表文件,查看列表文件内容。
由:
masm/l+文件名生成lst
注:
实际上高级程序结构控制语句在汇编时,都转换成相应的比较指令和条件转移指令了。
高级程序结构控制语句使得程序设计、理解都变得非常方便。
生成list文件为
Microsoft(R)MacroAssemblerVersion6.15.880306/07/1119:
36:
33
6.asmPage1-1
.modelsmall
.stack
0000.data
0000162030324548HANDB22,32,48,50,69,72,85,40,75,89,66,58,48,70,78,200;
55284B59423A
30464EC8
0010=0010countequ$-han;
00100006[MEMDB6dup(0);
00
]
00160A0D53636F72scoreedb10,13,'
;
652022452220
636F756E7420
69733A24
002C0A0D53636F72scoreddb10,13,'
652022442220
00420A0D53636F72scorecdb10,13,'
652022432220
00580A0D53636F72scorebdb10,13,'
652022422220
006E0A0D53636F72scoreadb10,13,'
652022412220
00840A0D53636F72scoreodb10,13,'
6520224F7468
65722220636F
756E74206973
3A24
009E0084R0016R002CRtabledwscoreo,scoree,scored,scorec,scoreb,scorea;
0042R0058R006ER
0000.code
.startup
0017B90010MOVCX,count
001ABE0000movsi,0
001Dbegin:
.ifhan[si]<
002480060011R01addmem[1],1
.elseifhan[si]>
003980060012R01addmem[2],1
004E80060013R01addmem[3],1
006380060014R01addmem[4],1
007880060015R01addmem[5],1
.else
007F80060010R01addmem[0],1
.endif
008446incsi
0085E296loopbegin
0087B90006movcx,6
.repeat;
008A8BF1movsi,cx
008C4Edecsi
008D03F6addsi,si;
008F8B94009ERmovdx,table[si]
0093B409movah,9
0095CD21int21h;
009732E4xorah,ah
00998BF1movsi,cx
009B8A84000FRMOVal,mem[si-1];
009FB30Amovbl,10
00A1F6F3divbl;
00A388A4000FRmovmem[si-1],ah;
AH为余数是个位,暂时存放回该内存单元
00A78AD0movdl,AL;
00A980C230adddl,30h;
00ACB402MOVAH,2
00AECD21INT21H;
00B0B402MOVAH,2
00B28A94000FRmovdl,mem[si-1]
00B680C230adddl,30h
00B9CD21INT21H;
.untilcxz;
CX自动减1,减到0结束循环
.exit0
END
6.asmSymbols2-1
SegmentsandGroups:
NameSizeLengthAlignCombineClass
DGROUP.............GROUP
_DATA.............16Bit00AAWordPublic'
DATA'
STACK.............16Bit0400ParaStack'
STACK'
_TEXT.............16Bit00C2WordPublic'
CODE'
Symbols:
NameTypeValueAttr
@CodeSize...........Number0000h
@DataSize...........Number0000h
@Interface...........Number0000h
@Model.............Number0002h
@Startup............LNear0000_TEXT
@code.............Text_TEXT
@data.............TextDGROUP
@fardata?
...........TextFAR_BSS
@fardata............TextFAR_DATA
@stack.............TextDGROUP
HAN..............Byte0000_DATA
MEM..............Byte0010_DATA
begin.............LNear001D_TEXT
count.............Number0010h
scorea.............Byte006E_DATA
scoreb.............Byte0058_DATA
scorec.............Byte0042_DATA
scored.............Byte002C_DATA
scoree.............Byte0016_DATA
scoreo.............Byte0084_DATA
table.............Word009E_DATA
0Warnings
0Errors
4-6.确定自变量wordX中的1的最低位数(0~15),并将结果存于变量byteY中;
若wordX中没有1的位,则将-1存入byteY。
实验源程序:
.modelsmall
.stack
.data
wordXdw56
byteYdb?
.code
.startup
movax,wordX
movcx,16
movdl,-1
again:
incdl
testax,1
rorax,1
loopeagain
jenotfound
movbyteY,dl
jmpdone
notfound:
movbyteY,-1
done:
movah,02h
movbl,byteY
End
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 题目 测试 截图 456
![提示](https://static.bdocx.com/images/bang_tan.gif)