微机原理及应用习题库硬件应用设计题汇编语言程序设计题
更新时间:2024-06-04 11:38:01 阅读量: 综合文库 文档下载
- 微机原理及应用课后答案推荐度:
- 相关推荐
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组中负数的个数。其中,在该数组的第一个字节存放的是数组中所包含的数据的个数,第二个字节用来存放结果,即数组中负数的个数,数组中的第三个字节开始存放的是数组中的数据。
1. 写出编程思想; 2. 编写完整的源程序。
1. 编程思想
为统计数组中负数的个数,需要逐个判断数组中的每个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,便是数组中所包含的负数的个数。
2.完整的源程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
ARRAY DB 200 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DI,ARRAY MOV SI,DI MOV CL,[DI] XOR CH,CH MOV BL,CH INC DI INC DI
AGAIN:TEST BYTE PTR[DI],80H JZ POSI INC BL POSI: INC DI
LOOP AGAIN MOV [SI]+1,BL MOV AH,4CH INT 21H CODE ENDS
END START
1
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编一个完整的汇编语言程序,完成从键盘输入一个字符,若输入的是1字符,则在屏幕上显示你的英文名字;若输入的是2字符,则在屏幕上显示你的学号。若输入的不是1或者2字符,则重新输入。
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
STRING1 DB ‘DO YOU WANT TO INPUT STRING?(Y/N):$’ CRLF DB 0DH,0AH,’$’
STRING2 DB ‘PLEASE INPUT STRING.’,0DH,0AH,’$’ NAME DB ‘ZHANG SAN.’ ,0DH,0AH,’$’ NUMBER DB ‘020701053.’ ,0DH,0AH,’$’ DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
LEA DX,STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
CMP AL,’Y’ JE INPUT CMP AL,’y’ JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,STRING2 MOV AH,09H INT 21H
AGAIN: MOV AH,01H INT 21H CMP AL,’1’ JE DISPNAME CMP AL,’2’
JE DISPNUMBER
2
JMP AGAIN
DISPNAME: LEA DX,NAME MOV AH,09H INT 21H JMP DONE
DISPNUMBER:LEA DX,NUMBER MOV AH,09H INT 21H
DONE: MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组中小于80H的数的个数。其中,在该数组的第一个字节存放的是数组中所包含的数据的个数,第二个字节用来存放结果,数组中的第三个字节开始存放的是数组中的数据。
1. 写出编程思想; 2. 编写完整的源程序。
1.编程思想
将数组中的每个数逐个与80H比较,根据大小关系方可统计出数组中小于80H的数的个数 2.完整的源程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
ARRAY DB 200 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DI,ARRAY MOV SI,DI MOV CL,[DI] XOR CH,CH MOV BL,CH INC DI
3
INC DI
AGAIN:CMP BYTE PTR[DI],80H JAE L1 INC BL L1: INC DI
LOOP AGAIN MOV [SI]+1,BL MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
在存储器DATABUF以下连续的单元存放着由字符0~ 9或A~ F组成的一串字符(字符个数自定义或用其它方法求解),试编写完整的8086汇编语言程序,将其转换成数字存回原处。 (如某单元的字符为‘1’,即31H,就转换成01H;为‘A’, 即41H,就转换成0AH)
1. 写出编程思想; 2. 编写完整的源程序。
1.编程思想
将存储器DATABUF以下连续的单元中的每个数与39H(1字符的ASCLL码)比较,若该数小于等于39H,则将该数减去30H,否则将该数减去37H,其结果就是该字符对应的数字。 2. 完整的源程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
DATABUF DB ‘1234ABCDdcsa56’ COUNT EQU $-DATABUF DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
MOV SI,OFFSET DATABUF MOV CX,COUNT NEXT: MOV AL,[SI] CMP AL,39H JBE L1
4
SUB AL,7 L1: SUB AL,30H MOV [SI],AL INC SI
LOOP NEXT MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第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分,70分—79分,60分—69分,低于60分的人数。
2. 完整的源程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
DATAB DB 80 DUP(?) BTRX DB 5 DUP(00H) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
MOV SI,OFFSET DATAB MOV DI,OFFSET BTRX XOR BX,BX XOR DX,DX MOV CX,80 NEXT: MOV AL,[SI]
5
CMP AL,90 JB C80
INC BH ;≥90分的人数 JMP AAA C80: CMP AL,80 JB C70
INC BL ;≥80分的人数 JMP AAA C70: CMP AL,70 JB C60
INC DH ;≥70分的人数 JMP AAA C60: CMP AL,60 JB AAA
INC DL ;≥60分的人数 JMP AAA AAA: INC SI
LOOP NEXT MOV AL,80 SUB AL,BH SUB AL,BL SUB AL,DH
SUB AL,DL ;<50分的人数 MOV [DI],BH MOV [DI]+1,BL MOV [DI]+2,DH MOV [DI]+3,DL MOV [DI]+4,AL MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕上显示出来。1. 写出编程思想。
2. 编写完整的汇编语言程序。
1. 编程思想
6
用DOS 0AH号功能完成从键盘输入一串字符,用DOS 09H号功能完成屏幕的显示。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
STRING1 DB ‘DO YOU WANT TO INPUT STRING?(Y/N):$’ CRLF DB 0DH,0AH,’$’
STRING2 DB ‘PLEASE INPUT STRING.’,0DH,0AH,’$’ BUFIN DB 20H DB ?
BUFIN1 DB 20H DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
LEA DX,STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
CMP AL,’Y’ JE INPUT CMP AL,’y’ JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,STRING2 MOV AH,09H INT 21H
LEA DX,BUFIN MOV AH,0AH INT 21H
MOV AL,BUFIN+1 CBW
LEA SI,BUFIN+2 ADD SI,AX
MOV BYTE PTR [SI],’$’ LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,BUFIN+2
7
MOV AH,09H INT 21H
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
已知有100个8位无符号数已存放在缓存区INX中,编写完整的汇编语言程序,实现对这100个数据由高到低排序。
1。写出编程思想。
2。编写完整的汇编语言程序。
1. 编程思想
利用气泡排序法对这100个8位无符号数两两进行比较,从而完成值的大小从大至小排序。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
INX DB 100 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CH,100-1 B10: LEA SI,INX MOV CL,CH B20: MOV AL ,[SI]
CMP AL ,[SI]+1 JAE B30 XCHG AL, [SI]+1 MOV [SI],AL B30: INC SI
DEC CL JNZ B20 DEC CH
JNZ B10
8
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写完整的汇编语言程序,实现以下功能:
从键盘输入一串字符,将其按ASCII码值的大小从小至大排序,并将排好序的新的字符串输 出到屏幕上显示出来。
1。写出编程思想。
2。编写完整的汇编语言程序。
1. 编程思想
用DOS 0AH号功能完成从键盘输入一串字符,利用气泡排序法对输入的字符串中字符两两进行比较,从而完成按ASCII码值的大小从大至小排序。对排好序的新的字符串,用DOS 09H号功能完成屏幕的显示。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
STRING1 DB ‘DO YOU WANT TO INPUT STRING?(Y/N):$’ CRLF DB 0DH,0AH,’$’
STRING2 DB ‘PLEASE INPUT STRING.’,0DH,0AH,’$’ BUFIN DB 20H DB ?
BUFIN1 DB 20H DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
LEA DX,STRING1 MOV AH,09H INT 21H
MOV AH,01H INT 21H
CMP AL,’Y’
9
JE INPUT CMP AL,’y’ JNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H
LEA DX,STRING2 MOV AH,09H INT 21H
B10: B20: B30: DISP: CODE
LEA DX,BUFIN MOV AH,0AH INT 21H
MOV AL,BUFIN+1 CBW
LEA SI,BUFIN+2 ADD SI,AX
MOV BYTE PTR [SI],’$’LEA DX,CRLF MOV AH,09H INT 21H
MOV CH,BUFIN+1 DEC CH
LEA SI,BUFIN+2 MOV CL,CH MOV AL ,[SI]
CMP AL ,[SI]+1 JAE B30 XCHG AL, [SI]+1 MOV [SI],AL INC SI
DEC CL JNZ B20 DEC CH JZ DISP
JMP B10
LEA DX,BUFIN+2 MOV AH,09H INT 21H
MOV AH,4CH INT 21H ENDS
END START 10
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
在首址为DAT的字数组中存放有100个无符号数,求出它们的平均值,并统计大于、等于及小于此平均数的个数。
1. 简述编程思想,画出流程图; 2. 编写完整的源程序。 1. 编程思想
先求出100个无符号数的和,除以100就是平均值;然后用每个数与平均值比较就可得出大于、等于及小于此平均数的个数。 2. 完整的汇编语言程序
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
DAT DB 100 DUP(?) LVEL DB 0 GDAT DB 0 EDAT DB 0 LDAT DB 0 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,100 LEA SI,DAT MOV AX,0 L1: ADD AL,[SI] ADC AH,0 INC SI LOOP L1 MOV BL,100 DIV BL
MOV LVEL,AL MOV CX,100 LEA SI,DAT CMP [SI,AL JA DY JE XD INC LDAT
11
JMP L2
DY: INC GDAT JMP L2 XD: INC EDAT L2: INC SI LOOP L1
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编一个完整的汇编语言程序,求某数的绝对值,并将结果放回原处。STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT XADR DW 3456H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,XADR TEST AX,8000H JNS DONE NEG AX
MOV XADR,AX MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8
12
15
编一个完整的汇编语言程序,完成将以DSRC为首址的连续的100个字节搬家到DDST以下单元。
STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATA SEGMENT
DSRC DB 100 DUP(?) DDST DB DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA SI,DSRC LEA DI,DDST MOV CX,100 NEXT: MOV AL,[SI] MOV [DI],AL INC SI INC DI
LOOP NEXT MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写FAR类型子程序实现以十六进制数在屏幕上显示AL的内容。 1. 写出编程思想。 2. 编写完整的源程序。 CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK DISPLAY PROC FAR
PUSH AX PUSH CX PUSH DX
13
PUSH AX MOV CL,4 ;处理高位十六进制数
SHR AL,CL CALL CHANG ;十六进制数变换成ASCII码
MOV AH,02 MOV DL,AL INT 21H ;显示一位字符
POP AX AND AL,0FH ;处理低位十六进制数 CALL CHANG
;十六进制数变换成ASCII码
MOV AH,02 MOV DL,AL INT 21H ;显示一位字符
POP DX POP CX POP AX RET DISPAL ENDP
CODE ENDS
END DISPLAY
MOV AH,4CH INT 21H CODE ENDS
END START
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
编写FAR类型子程序实现统计一个字(AX)中“1”的个数。
14
1.写出编程思想。 2.编写完整的源程序。 1.编程思想
由于AL中有两位十六进制数,每一位的值为0~9、0AH~0FH,在显示时需要将它们转换成相应的ASCII码,然后调用INT 21H的02H号功能进行显示。 2.完整的源程序 CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
COUNTER1 PROC NEAR PUSH AX
COU1:
SHR AX,1 ADC BL,0 LOOP COU1 MOV CX,16 XOR BL,BL
POP AX RET COUNTER1 ENDP
CODE ENDS
END DISPLAY
微机原理及应用 汇编语言程序设计 第32讲~第38讲 0.8 0.8 15
设在BUFFER中已经保存有字型数据(x1,x2,?,xn),其中前2个字节为数据的个数,计算数据的差分,并保存在DIFF缓冲区中。 1.写出编程思想。 2.编写完整的源程序。 1.编程思想
可根据数据的差分定义来编成计算,其公式为:
dxk?
xk?xk?12(k?1,2,?,n?1)
15
DEC DI
DEC DI
LOOP LP2
POP DI
POP SI POP CX LOOP LP1
POP DI POP SI POP CX POP AX RET SORT
ENDP
PRODUCT PROC NEAR PUSH AX PUSH CX MOV AL,17 MOV BH,59 LEA SI,AVG
PR1:
ADD AL,BH CMP AL,100 JAE PR1 CMP AL,40 JB PR1 MOV [SI],AL INC SI LOOP PR1 POP CX
MOV AL,5
26
;产生模拟数据
PR2:
MOV BH,3 LEA SI,AVG LEA DI,MIN
ADD AL,BH CMP AL,15 JAE PR2 MOV BL,[SI] SUB BL,AL MOV [DI],BL INC SI INC DI LOOP PR2 POP AX RET
PRODUCT ENDP CODE ENDS
END START
第四章 8086汇编语言程序设计
第一节 伪指令(重点?)
CPU指令与伪指令之间的区别:
(1)CPU指令是给CPU的命令,在运行时由CPU执行,每条指令对应CPU的一种特定的操作。而伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。
(2)汇编以后,每条CPU指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。
1、数据定义伪指令
(1)数据定义伪指令的一般格式为: ?[变量名] 伪指令 操作数[,操作数…] DB 用来定义字节(BYTE)
DW 用来定义字(WORD) DD 用来定义双字(DWORD)
27
(2)操作数的类型可以是: ①常数或常数表达式
?例如: DATA_BYTE DB 10,5,10H DATA_WORD DW 100H,100,-4 DATA_DW DD 2*30,0FFFBH ?可以为字符串(定义字符串最好使用DB) ?例如:char1 DB ‘AB’ ?可以为变量
?可以为?号操作符
例如:X DB 5,?,6
?号只是为了给变量保留相应的存储单元,而不赋予变量某个确定的初值。 ?重复次数:N DUP(初值[,初值…]) ?例如:ZERO DB 2 DUP(3,5)
XYZ DB 2 DUP(0,2 DUP(1,3),5)
?在伪操作的操作数字段中若使用$,则表示的是地址计数器的当前值。
2、补充内容:
(1)类型 PTR 地址表达式例如:MOV BYTE PTR [BX],12H
INC BYTE PTR [BX]
注意:单操作数指令,当操作数为基址、变址、基+变的时候必须定义
3、符号定义伪指令 (1)EQU
格式:名字 EQU 表达式
EQU伪指令将表达式的值赋予一个名字,以后可用这个名字来代替上述表达式。 例:CONSTANT EQU 100
NEW_PORT EQU PORT_VAL+1
(2) =(等号)
与EQU类似,但允许重新定义 例:
┇ EMP=7 ;值为7 ┇ EMP=EMP+1 ;值为8
(3)LABEL
LABEL伪指令的用途是定义标号或变量的类型 格式:名字 LABEL 类型
变量的类型可以是BYTE,WORD,DWORD。标号的类型可以是NEAR或FAR
4、段定义伪指令
与段有关的伪指令有:
SEGMENT、ENDS、ASSUME、ORG
28
(1)段定义伪指令的格式如下:
段名 SEGMENT [定位类型] [组合类型] [’类别’]
┇
段名 ENDS
SEGMENT和ENDS
这两个伪指令总是成对出现,二者前面的段名一致。二者之间的删节部分,对数据段、附加段及堆栈段,一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。此外,还必须明确段和段寄存器的关系,这可由ASSUME语句来实现。
(2)ASSUME 格式:
ASSUME 段寄存器名:段名[,段寄存器名:段名[,…]]
ASSUME伪指令告诉汇编程序,将某一个段寄存器设置为某一个逻辑段址,即明确指出源程序中逻辑段与物理段之间的关系。
(3)ORG
伪指令ORG规定了段内的起始地址或偏移地址,其格式为: ORG <表达式>
表达式的值即为段内的起始地址或偏移地址,从此地址起连续存放程序或数据。
5、汇编程序的一般结构(重点?)(记住) DATA SEGMENT …
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA BGN: MOV AX ,DATA MOV DS,AX ….
MOV AH,4CH INT 21H CODE ENDS END BGN
29
正在阅读:
微机原理及应用习题库硬件应用设计题汇编语言程序设计题06-04
闪亮的名字作文800字【3篇】03-26
-物料编码与物料选型04-12
政治必修四生活与哲学整理08-30
某乡镇农办2021年上半年工作总结与下半年工作打算08-03
苏教版五年级语文上册第五单元测试题03-09
2017-2023年白俄罗斯电网建设工程承包行业投资前景预测研究报告(目录) - 图文11-04
南通大学2015年硕士研究生招生专业目录05-16
着色剂项目可行性研究报告01-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 应用
- 汇编语言
- 题库
- 微机
- 程序设计
- 原理
- 硬件
- 设计
- 2018中级财务管理章节练习 - 第02章 财务管理基础
- 认识人民币练习题
- 标准韩国语第一册语法
- 德国工会发展的历史考察
- 弱电智能化施工进度计划范本
- 荣誉证书 冉郭鑫 - 图文
- 2019中考化学真题分类汇编 3考点16 常用的化学实验技能 1鉴别 1
- 江财151统计学试卷A
- 百图软件在绘制渠道纵横断面中的应用
- 南教字18号
- 天津市南开区2013届高三第一次模拟考试 化学 Word版含答案
- 新国标罐区重大危险源专项应急预案(参考版本)
- 136系统精讲-肌肉骨骼系统和结缔组织-第七节 系统性红斑狼疮病人
- 管仲列传
- 软件测试报告模板(完美实用)V3
- 日程安排-西安交通大学管理学院
- 1气焊
- 房地产企业岗位招聘笔试题题库之二十五(含答案):法律事务经理
- 钢筋混凝土过梁计算书
- 电工技师复习题(有答案)