版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理及应用习题库硬件应用设计题汇编语言程序设计题
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组
中负数的个数。其中,在该数组的第一个字节存放的是数组中所包含
的数据的个数,第二个字节用来存放结果,即数组中负数的个数,数
组中的第三个字节开始存放的是数组中的数据。
1.写出编程思想;
2.编写完整的源程序。
1.编程思想
为统计数组中负数的个数,需要逐个判断数组中的每个数据,然
后将所有数据中凡是符号位为1的数据的个数累加起来,便是数组中
所包含的负数的个数。
2.完整的源程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB200DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATA,SS:STACK
START:MOVAXZDATA
MOVDS,AX
LEADLARRAY
MOVSLDI
MOVCLJDI]
XORCH,CH
MOVBL,CH
INCDI
INCDI
AGAIN:TESTBYTEPTR[DI]z80H
JZPOSI
INCBL
POSI:INCDI
LOOPAGAIN
MOV[SI]+1,BL
MOVAH,4cH
INT21H
CODEENDS
ENDSTART
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
编一个完整的汇编语言程序,完成从键盘输入一个字符,若输入
的是1字符,则在屏幕上显示你的英文名字;若输入的是2字符,则
在屏幕上显示你的学号。若输入的不是1或者2字符,则重新输入。
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$Z
;,
CRLFDB0DHz0AH$
STRING2DB'PLEASEINPUTSTRING:,0DH,0AH;$'
z
NAMEDB'ZHANGSAN:ZODHZOAH;$
NUMBERDB,020701053:,ODH,OAH;$z
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
LEADX.STRINGl
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL;Y'
JEINPUT
CMPAL;y'
JNEDONE
INPUT:LEADX,CRLF
MOVAHz09H
INT21H
LEADX,STRING2
MOVAH,09H
INT21H
AGAIN:MOVAHz01H
INT21H
CMPAL;lz
JEDISPNAME
CMPAL;2'
JEDISPNUMBER
JMPAGAIN
DISPNAME:LEADX,NAME
MOVAH,09H
INT21H
JMPDONE
DISPNUMBER:LEADX,NUMBER
MOVAH,09H
INT21H
DONE:MOVAHZ4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组
中小于80H的数的个数。其中,在该数组的第一个字节存放的是数蛆
中所包含的数据的个数,第二个字节用来存放结果,数组中的第三个
字节开始存放的是数组中的数据。
1.写出编程思想;
2.编写完整的源程序。
1.编程思想
将数组中的每个数逐个与80H比较,根据大小关系方可统计出数
组中小于80H的数的个数2.完整的源程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB200DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATAZSS:STACK
START:MOVAX,DATA
MOVDS,AX
LEADLARRAY
MOVSI,DI
MOVCLJDI]
XORCH,CH
MOVBLZCH
INCDI
AGAIN:CMPBYTEPTR[DI],80H
JAELI
INCBL
LI:INCDI
LOOPAGAIN
MOV[SI]+1,BL
MOVAH,4cH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
在存储器DATABUF以下连续的单元存放着由字符0~9或A~F
组成的一串字符(字符个数自定义或用其它方法求解),试编写完整
的8086汇编语言程序,将其转换成数字存回原处。(如某单元的字符
为T,即31H,就转换成01H;为A,即41H,就转换成0AH)
1.写出编程思想;
2.编写完整的源程序。
1.编程思想
将存储器DATABUF以下连续的单元中的每个数与39H(1字符的
ASCLL码)比较,若该数小于等于39H,则将该数减去30H,否则将
该数减去37H,其结果就是该字符对应的数字。2.完整的源程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
DATABUFDB/1234ABCDdcsa56,
COUNTEQU$-DATABUF
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDSZAX
MOVSI,OFFSETDATABUF
MOVCX,COUNT
NEXT:MOVAL,[SI]
CMPALZ39H
JBELI
LI:SUBAL,30H
MOV[SI],AL
INCSI
LOOPNEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
在当前数据段,偏移地址为DATAB开始的顺序80个单元中,存放
着某班80个同学某门课考试的成绩,编写程序统计高于等于90分,
80分一89分,70分一79分,60分一69分"氐于60分的人数各为
多少,将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。
1.写出编程思想。
2.编写完整的源程序。
1.编程思想
将偏移地址为DATAB开始的顺序80个单元中的数分别与90、
80、70、60比较,根据比较的大小关系就可统计出高于等于90分,
80分一89分z70分一79分,60分一69分/氐于60分的人数。
2.完整的源程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
DATABDB80DUP(?)
BTRXDB5DUP(OOH)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATAZSS:STACK
START:MOVAX,DATA
MOVDSZAX
MOVSLOFFSETDATAB
MOVDLOFFSETBTRX
XORBX,BX
XORDX,DX
MOVCX,80
NEXT:MOVAL,[SI]
JBC80
INCBH;>90分的人数
JMPAAA
C80:CMPAL,80
JBC70
INCBL;>80分的人数
JMPAAA
C70:CMPALJO
JBC60
INCDH;>70分的人数
JMPAAA
C60:CMPALz60
JBAAA
INCDL;>60分的人数
JMPAAA
AAA:INCSI
LOOPNEXT
MOVAL,80
SUBAL,BH
SUBAL,BL
SUBAL,DH
SUBAL,DL;<50分的人数
MOV[DI]ZBH
MOV[DIJ+l.BL
MOV[DI]+2,DH
MOV[DI]+3,DL
MOV[DI]+4,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕
上显示出来。
1.写出编程思想。
2编写完整的汇编语言程序。
1.编程思想
用DOS0AH号功能完成从键盘输入一串字符,用DOS09H号功
能完成屏幕的显示。
2.完整的汇编语言程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$Z
z
CRLFDB0DHz0AH;$
STRING2DB'PLEASEINPUTSTRING:,0DH,0AH;$'
BUFINDB20H
DB?
BUFIN1DB20HDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATAZSS:STACK
START:MOVAX,DATA
MOVDS,AX
LEADXZSTRING1
MOVAH,09H
INT21H
MOVAHz01H
INT21H
CMPAL;Y'
JEINPUT
CMPAL;y'
JNEDONE
INPUT:LEADX,CRLF
MOVAH,09H
INT21H
LEADX5TRING2
MOVAH,09H
INT21H
LEADXZBUFIN
MOVAHZOAH
INT21H
MOVALZBUFIN+1
CBW
LEASLBUFIN+2
ADDSI,AX
MOVBYTEPTR[SI];$f
LEADXZCRLF
MOVAH,09H
INT21H
LEADX,BUFIN+2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
已知有100个8位无符号数已存放在缓存区INX中,编写完整的
汇编语言程序,实现对这100个数据由高到低排序。
lo写出编程思想。
2。编写完整的汇编语言程序。
1.编程思想
利用气泡排序法对这100个8位无符号数两两进行比较,从而完
成值的大小从大至小排序。
2.完整的汇编语言程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
INXDB100DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVCHJ00-1
BIO:LEASIJNX
MOVCL,CH
B20:MOVALJSI]
CMPALZ[SI]+1
JAEB30
XCHGAL,[SI]+1
MOV[SI],AL
B30:INCSI
DECCL
JNZB20
DECCH
JNZBIO
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
编写完整的汇编语言程序,实现以下功能:
从键盘输入一串字符,将其按ASCII码值的大小从小至大排序,
并将排好序的新的字符串输出到屏幕上显示出来。
1。写出编程思想。
2。编写完整的汇编语言程序。
1.编程思想
用DOS0AH号功能完成从键盘输入一串字符,利用气泡排序法
对输入的字符串中字符两两进行比较,从而完成按ASCII码值的大小
从大至小排序。对排好序的新的字符串,用DOS09H号功能完成屏幕
的显小。
2.完整的汇编语言程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$,
z
CRLFDB0DHz0AH;$
z
STRING2DB'PLEASEINPUTSTRING:z0DH,0AH;$
BUFINDB20H
DB?
BUFIN1DB20HDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
LEADX.STRINGl
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL;Y'
JEINPUT
CMPAL;y'
JNEDONE
INPUT:LEADX,CRLF
MOVAH,09H
INT21H
LEADX,STRING2
MOVAH,09H
INT21H
LEADX,BUFIN
MOVAH,0AH
INT21H
MOVAL.BUFIN+1
CBW
LEASI,BUFIN+2
ADDSI,AX
MOVBYTEPTR[SI];$r
LEADXZCRLF
MOVAH,09H
INT21H
MOVCHZBUFIN+1
DECCH
BIO:LEASLBUFIN+2
MOVCL,CH
B20:MOVALJSI]
CMPALZ[SI]+1
JAEB30
XCHGAL,[SI]+1
MOV[SI],AL
B30:INCSI
DECCL
JNZB20
DECCH
JZDISP
JMPBIO
DISP:LEADX,BUFIN+2
MOVAHz09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
在首址为DAT的字数组中存放有100个无符号数,求出它们的平
均值,并统计大于、等于及小于此平均数的个数。
1.简述编程思想,画出流程图;
2.编写完整的源程序。
1.编程思想
先求出100个无符号数的和,除以100就是平均值;然后用每个
数与平均值比较就可得出大于、等于及小于此平均数的个数。
2.完整的汇编语言程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
DATDB100DUP(?)
LVELDB0
GDATDBO
EDATDBO
LDATDB0
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATAZSS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVCX,100
LEASI,DAT
MOVAX,0
LI:ADDAL,[SI]
ADCAH,0
INCSI
LOOPLI
MOVBL,100
DIVBL
MOVLVELZAL
MOVCX,100
LEASI,DAT
CMP[SIAL
JADY
JEXD
INCLDAT
JMPL2
DY:INCGDAT
JMPL2
XD:INCEDAT
L2:INCSI
LOOPLI
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
编一个完整的汇编语言程序,求某数的绝对值,并将结果放回原
处。STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
XADRDW3456H
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDSZAX
MOVAX,XADR
TESTAX,8000H
JNSDONE
NEGAX
MOVXADR,AX
MOVAH,4cH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
编一个完整的汇编语言程序,完成将以DSRC为首址的连续的
100个字节搬家到DDST以下单元。
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
DSRCDB100DUP(?)
DDSTDBDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATAZSS:STACK
START:MOVAX,DATA
MOVDS,AX
LEASLDSRC
LEADLDDST
MOVCX,100
NEXT:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPNEXT
MOVAH,4cH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
编写FAR类型子程序实现以十六进制数在屏幕上显示AL的内容。
1.写出编程思想。
2.编写完整的源程序。
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
DISPLAYPROCFAR
PUSHAX
PUSHCX
PUSHDX
PUSHAX
MOVCL,4;处理高位十六进制数
SHRAL,CL
CALLCHANG;十六进制数变换成ASCII码
MOVAHz02
MOVDL,AL
INT21H;显示一一位字符
POPAX
ANDAL,0FH;处理低位十六进制数
CALLCHANG;十六进制数变换成ASCII码
MOVAH,02
MOVDL,AL
INT21H;显示一位字符
POPDX
POPCX
POPAX
RET
DISPALENDP
CODEENDS
ENDDISPLAY
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲~第38讲
0.8
0.8
15
编写FAR类型子程序实现统计一个字(AX)中的个数。
1.写出编程思想。
2.编写完整的源程序。1.编程思想
由于AL中有两位十六进制数,每一位的值为0~9、0AH〜0FH,
在显示时需要将它们转换成相应的ASCII码,然后调用INT21H的
02H号功能进行显示。2.完整的源程序CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
COUNTER1PROCNEARPUSHAX
MOVCXJ6
XORBLZBL
COUI:
SHRAX,1ADCBL,0
LOOPCOUIPOPAXRETCOUNTERlENDPCODEENDSEND
DISPLAY
微机原理及应用汇编语言程序设计第32讲~第38讲0.80.815
设在BUFFER中已经保存有字型数据(nxxx,〃21),其中前2
个字节为数据的个数,计算数据的差分,并保存在DIFF缓冲区中。1.
写出编程思想。2.编写完整的源程序。1.编程思想
可根据数据的差分定义来编成计算,其公式为:)L21(2
l-=+=-nkxxdxkkk
2.完整的源程序
STACKSEGMENTSTACK
DB256DUP(?)
STACKENDS
DATASEGMENT
BUFFERDWn
DWXLX2,...,Xn
DIFFDWn-1DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODEZDS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVSLBUFFER
MOVCX,[SI]
ADDSI,2
JCXZPROCEND;当(CX)=0时,跳过循环
LEADLDIFF
MOVAX,[SI]
ADDSI,2
PROCI:
ADDAXZ[SI]
SHRAXL完成(AX)+2操作
MOV[DI],AX;保存差分结果
ADDDI,2
MOVAX,[SI]
ADDSI,2
LOOPPROCI
MOVAHZ4CH
INT21H
CODEENDS
ENDSTART
微机原理及应用
汇编语言程序设计
第32讲〜第38讲
0.8
0.8
15
字节型变量VARLVAR2和VAR3存放有3个无符号数,将其中
的内容按从大到小重新排列。
1.写出编程思想。
2编写完整的源程序。
1.编程思想
通过在三个数中找出最大值,将它与VAR1单元进行交换;然后
对剩余的两个数进行比较,将较大值存放在VAR2中。经重新排列后,
VAR1的值最大,VAR3的值最小。由于变量中存放的数据为无符号数,
因此应该采用JA、JAE、JB、JBE等指令。
2.完整的源程序
STACKSEGMENTSTACK'STACK'
DW100HDUP(?)
TOPLABELWORD
STACKENDS
DATASEGMENT
VARIDB46H;先假设一组值,以便检验程序设计的正确性
VAR2DB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程合同管理实务培训
- 自动喂料搅拌机管路设计
- 私域用户分层维护运营执行SOP
- 小型生物质颗粒成型机设计方案
- 重型柴油车尾气治理运维手册
- 基坑支护内力计算设计报告
- 钢结构高空吊装作业管控方案
- 桥梁工程支座安装施工方案
- 2026年陕西省西安市高考仿真卷生物试题含解析
- 厨房设备灭火装置设计安装验收方案
- 学前比较教育全套教学课件
- 生产制造行业岗位薪酬等级表
- 《图形创意》教案
- GB/T 42401-2023激光熔覆修复缺陷质量分级
- 外科学急性化脓性腹膜炎
- 人教版四年级语文上册《长城》课件
- 北京汇源审计报告
- 教案伦理学原理课件
- 消除浪费(七大浪费)课件
- 内功四经内功真经真本全书
- 常用公文写作规范与技巧课件
评论
0/150
提交评论