《2022年微机原理及应用习题库硬件应用设计题汇编语言程序设计题.docx》由会员分享,可在线阅读,更多相关《2022年微机原理及应用习题库硬件应用设计题汇编语言程序设计题.docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 微机原理及应用 汇编语言程序设计 第 32 讲第 38 讲0.8 0.8 15 假设有一字节型数组 ARRAY,编写完整的汇编语言程序求该数组中负数的个数;其中,在该 数组的第一个字节存放的是数组中所包含的数据的个数,其次个字节用来存放结果,即数组 中负数的个数,数组中的第三个字节开头存放的是数组中的数据;1 写出编程思想;2 编写完整的源程序;1. 编程思想为统计数组中负数的个数,需要逐个判定数组中的每个数据,然后将全部数据中凡是符号位为 1 的数据的个数累加起来,便是数组中所包含的负数的个数;2完整的源程序名师归纳总结 STACK SEGM
2、ENT STACK 第 1 页,共 27 页DB 256 DUP. STACK ENDS DATA SEGMENT ARRAY DB 200 DUP. DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,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 PTRDI,80H JZ POSI INC BL POSI: INC DI LOOP AGAIN MOV SI+
3、1,BL MOV AH,4CH INT 21H CODE ENDS END START - - - - - - -精选学习资料 - - - - - - - - - 微机原理及应用汇编语言程序设计第 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 IN
4、PUT 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:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL, YJE INPUT CMP
5、AL, yJNE DONE INPUT: LEA DX,CRLF MOV AH,09H INT 21H LEA DX,STRING2 MOV AH,09H INT 21H 名师归纳总结 AGAIN: MOV AH,01H 第 2 页,共 27 页INT 21H CMP AL, 1JE DISPNAME CMP AL, 2JE DISPNUMBER - - - - - - -精选学习资料 - - - - - - - - - JMP AGAIN DISPNAME: LEA DX,NAME MOV AH,09H INT 21H JMP DONE DISPNUMBER:LEA DX,NUMBER MO
6、V 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 SE
7、GMENT STACK 第 3 页,共 27 页DB 256 DUP. STACK ENDS DATA SEGMENT ARRAY DB 200 DUP. DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,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:CMP BYTE PTRDI,80H JAE L1
8、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以下连续的
9、单元中的每个数与39H(1 字符的 ASCLL码)比较, 如该数小于等于 39H,就将该数减去30H,否就将该数减去37H,其结果就是该字符对应的数字;2. 完整的源程序名师归纳总结 STACK SEGMENT STACK 第 4 页,共 27 页DB 256 DUP. STACK ENDS DATA SEGMENT DATABUF DB 1234ABCDdcsa56 COUNT EQU $-DA TABUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,O
10、FFSET DATABUF MOV CX,COUNT NEXT: MOV AL,SI CMP AL,39H JBE L1 - - - - - - -精选学习资料 - - - - - - - - - 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 分 8
11、9 分, 70 分 79 分,60 分 69 分,低于60 分的人数各为多少,将结果放在同一数据段、偏移地址为 BTRX开头的次序单元中;1. 写出编程思想;2. 编写完整的源程序;1. 编程思想将偏移地址为DATAB开头的次序80 个单元中的数分别与90、80、70、60 比较,依据比较的大小关系就可统计出高于等于 分的人数;2. 完整的源程序90 分, 80 分 89 分, 70 分 79 分, 60 分 69 分,低于 60名师归纳总结 STACK SEGMENT STACK 第 5 页,共 27 页DB 256 DUP. STACK ENDS DATA SEGMENT DATAB DB
12、 80 DUP. BTRX DB 5 DUP00H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET DA TAB MOV DI,OFFSET BTRX XOR BX,BX XOR DX,DX MOV CX,80 NEXT: MOV AL,SI - - - - - - -精选学习资料 - - - - - - - - - CMP AL,90 JB C80 INC BH ; 90 分的人数JMP AAA C80: CMP AL,80 JB C70 IN
13、C 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 微机原理及应用汇
14、编语言程序设计第 32 讲第 38 讲0.8 0.8 15 编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕上显示出来;1. 写出编程思想;2. 编写完整的汇编语言程序;1. 编程思想名师归纳总结 - - - - - - -第 6 页,共 27 页精选学习资料 - - - - - - - - - 用 DOS 0AH号功能完成从键盘输入一串字符,用2. 完整的汇编语言程序STACK SEGMENT STACK DB 256 DUP. STACK ENDS DATA SEGMENT DOS 09H号功能完成屏幕的显示;STRING1 DB DO YOU WANT TO INPUT STRI
15、NG.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:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL, YJE INPUT CMP AL, yJNE DONE INPUT: LEA DX,CRLF
16、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 页,共 27 页- - - - - - -精选学习资料 - - - - - - - - - MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS EN
17、D START 微机原理及应用 汇编语言程序设计 第 32 讲第 38 讲0.8 0.8 15 已知有 100 个 8 位无符号数已存放在缓存区 100 个数据由高到低排序;1;写出编程思想;INX 中,编写完整的汇编语言程序,实现对这2;编写完整的汇编语言程序;1. 编程思想 利用气泡排序法对这 100 个 8 位无符号数两两进行比较,从而完成值的大小从大至小排序;2. 完整的汇编语言程序名师归纳总结 STACK SEGMENT STACK 第 8 页,共 27 页DB 256 DUP. STACK ENDS DATA SEGMENT INX DB 100 DUP. DATA ENDS CO
18、DE SEGMENT ASSUME CS:CODE,DS:DA TA,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 - - - - - - -精选学习资料 - - - - - - - - - MOV AH,4CH INT 21H CODE ENDS END START 微机原理及应用汇
19、编语言程序设计第 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 SEGMEN
20、T 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第
21、9 页,共 27 页- - - - - - -精选学习资料 - - - - - - - - - JE INPUT INPUT: CMP AL, yJNE DONE 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 MOV CH,BUFIN+1 DEC CH B10:LE
22、A SI,BUFIN+2 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 JZ DISP JMP B10 DISP: LEA DX,BUFIN+2 MOV AH,09H INT 21H 名师归纳总结 CODE MOV AH,4CH 第 10 页,共 27 页INT 21H ENDS END START - - - - - - -精选学习资料 - - - - - - - - - 微机原理及应用汇编语言程序设计第 32 讲第 38 讲0.
23、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
24、SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,100 LEA SI,DA T 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,DA T CMP SI,AL 名师归纳总结 JA DY 第 11 页,共 27 页JE XD INC LDAT - - - - - - -精选学习资料 - - - - - - - - - JMP L2 DY: INC GDA
25、 T 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:DA TA,SS:STACK START: MOV AX,DATA MOV DS
26、,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 页,共 27 页精选学习资料 - - - - - - - - - 15 编一个完整的汇编语言程序,完成将以 DSRC为首址的连续的100 个字节搬家到DDST以下单元;STACK SEGMENT STACK DB 256 DUP. STACK ENDS DATA SEGMENT DSR
27、C DB 100 DUP. DDST DB DUP. DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,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类型子程序实现以十六进制数在屏幕上显示
28、AL 的内容;1. 写出编程思想;2. 编写完整的源程序;CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK DISPLAY PROC FAR PUSH AX PUSH CX PUSH DX 名师归纳总结 - - - - - - -第 13 页,共 27 页精选学习资料 - - - - - - - - - PUSH AX MOV CL,4 ;处理高位十六进制数 SHR AL,CL CALL CHANG ;十六进制数变换成ASCII 码MOV AH,02 MOV DL,AL INT 21H ;显示一位字符 POP AX AND AL,0FH ;处理低位十六
29、进制数ASCII 码CALL CHANG ;十六进制数变换成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 页,共 27 页- - - - - - -精选学习资料 - - - - - - - - - 1. 写出编
30、程思想;2. 编写完整的源程序;1. 编程思想由于 AL 中有两位十六进制数,每一位的值为0 9、0AH0FH,在显示时需要将它们转换成相应的 ASCII 码,然后调用 INT 21H 的 02H 号功能进行显示;2. 完整的源程序CODE SEGMENT CS:CODE,DS:DA TA,SS:STACK ASSUME COUNTER1 PROC NEAR PUSH AX MOV CX,16 XOR BL,BL COU1: SHR AX,1 ADC BL,0 LOOP COU1 POP AX RET COUNTER1 ENDP CODE ENDS DISPLAY END 微机原理及应用 汇编
31、语言程序设计 第 32 讲第 38 讲 0.8 0.8 15 设在 BUFFER中已经储存有字型数据(x1,x2,xn),其中前 2 个字节为数据的个数,运算数据的差分,并储存在DIFF 缓冲区中;1. 写出编程思想;2. 编写完整的源程序;1. 编程思想 可依据数据的差分定义来编成运算,其公式为:名师归纳总结 dxkxkxk1k,1,2,n1 第 15 页,共 27 页2- - - - - - -精选学习资料 - - - - - - - - - 2. 完整的源程序STACK SEGMENT STACK DB 256 DUP. STACK ENDS DATA SEGMENT BUFFER DW
32、 n DW X1,X2, ,XnDIFF DW n-1 DUP. DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV SI,BUFFER MOV CX,SI ADD SI,2 JCXZ PROCEND ;当( CX ) 0 时,跳过循环LEA DI,DIFF MOV AX,SI ADD SI,2 PROC1: CODE ADD AX,SI ;完成( AX )2 操作SHR AX,1 MOV DI,AX ;储存差分结果ADD DI,2 MOV AX,SI ADD SI,2
33、 LOOP PROC1 MOV AH,4CH INT 21H ENDS END START 微机原理及应用汇编语言程序设计第 32 讲第 38 讲0.8 0.8 15 字节型变量 VAR1、VAR2和 VAR3存放有 3 个无符号数,将其中的内容按从大到小重新排列;1. 写出编程思想;2. 编写完整的源程序;1. 编程思想名师归纳总结 - - - - - - -第 16 页,共 27 页精选学习资料 - - - - - - - - - 通过在三个数中找出最大值,将它与VAR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在VAR2中;经重新排列后,VAR1的值最大, VAR3的值最小;
34、由于变量中存放的数据为无符号数,因此应当采纳2. 完整的源程序JA、JAE、JB、JBE 等指令;STACK SEGMENT STACK STACK DW 100H DUP. TOP LABEL WORD STACK ENDS DATA SEGMENT VAR1 DB 46H ;先假设一组值,以便检验程序设计的正确性VAR2 DB 15H VAR3 DB 0A2H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STA
35、CK MOV SS, AX LEA SP,TOP MOV AL,VAR1 ;用户编写的程序 CMP AL,VAR2 JAE NO_CHG1 XCHG AL,VAR2 NO_CHG1: CMP AL,VAR3 JAE NO_CHG2 XCHG AL,VAR3 名师归纳总结 - - - - - - -第 17 页,共 27 页精选学习资料 - - - - - - - - - NO_CHG2: MOV VAR1,AL ;最大值储存到VAR1 MOV AL,VAR2 CMP AL,VAR3 JAE NO_CHG3 XCHG AL,VAR3 MOV VAR2,AL ;次大值储存到VAR2 NO_CHG3
36、: MOV AH,4CH ;返回 DOS操作系统 INT 21H CODE ENDS END START 微机原理及应用 汇编语言程序设计 第 32 讲第 38 讲 0.8 0.8 15 0FFH 值去掉,并传送到 在 SOURCE储备区中储存有 500 个字节数据,现在要求将数据中的 DESTINATION缓冲区中,其有效数据个数储存在 NUMBER中;1. 写出编程思想;2. 编写完整的源程序;1. 编程思想将 SI 指向源操作数区域,DI 指向目的操作数区域,每次传送一个字节,但在传送前对其内容进行检测,假如为0FFH,就不传送;在传送的同时要使有效数据个数的计数单元NUMBER进行加
37、1;2. 完整的源程序 N=500 STACK SEGMENT STACK STACK DW 100H DUP. TOP LABEL WORD STACK ENDS DATA SEGMENT 名师归纳总结 - - - - - - -第 18 页,共 27 页精选学习资料 - - - - - - - - - SOURCE LABEL BYTE ;假设有 X=17 REPT 500 X=X+97 mod 256 DB X ENDM DESTINATION DB N DUP. NUMBER DW . DATA ENDS CODE SEGMENT 500 个数据,并利用重复宏随机产生 ASSUME C
38、S:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP XOR AX,AX ;用户编写的程序MOV NUMBER,AX MOV CX,N LEA SI,SOURCE LEA DI,DESTINATION MOVE1: MOV AL,SI INC SI CMP AL,0FFH JZ MOVE2 MOV DI,AL INC DI 名师归纳总结 - - - - - - -第 19 页,共 27 页精选学习资料 - - - - - - - - - INC NUMBER MOVE2: LOOP MOVE1 MOVE_END: MOV AH,4CH ;返回 DOS操作系统 INT 21H CODE ENDS END START 微机原理及应用 汇编语言程序设计 第 32 讲第 38 讲 0.8 0.8 15 在缓冲区 DAT1和 DAT2中,存放着两组递增有序的