微机原理与接口试题及解答40页 联系客服

发布时间 : 星期日 文章微机原理与接口试题及解答40页更新完毕开始阅读6313ab9dcc22bcd127ff0c0e

6.编写一个中断程序,实现人机对话。要求执行程序时,显示‘WHAT IS YOUR NAME?’,在回车换行后,接收键盘输入信息,并显示。(提示:使用09H和0AH功能调用)

DATA SEGMENT BUF DB 81 DB ?

DB 81 DUP ( ? )

MESG DB ‘WHAT IS YOUR NAME?’, 0AH, 0DH DB $ DATA ENDS

STACK SEGMENT PARA STACK ‘STACK’

DB 100 DUP ( ? ) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, DS: DATA, SS: STACK

START PROC FAR PUSH DS MOV AX, 0 PUSH AX

MOV AX, DATA MOV DS, AX

DISP: MOV DX,OFFSET MESG

MOV AH,09H INT 21H

KEYBI: MOV DX, OFFSET BUF

MOV AX, 0AH INT 21H

LF: MOV DL, 0AH

MOV AH,02H INT 21H

DISTR:MOV DX,OFFSET BUF+2 MOV AH, 09H INT 21H RET

START ENDP CODE ENDS END START

7.编写程序找出BUF数据区中50个带符号数的最大值和最小值,并分别存入MAX和MIN单元。 参考程序如下:

DATA SEGMENT

BUF DB 50 DUP(?) MAX DB ? MIN DB ?

CONT EQU $-BUF DATA ENDS

STACK SEGMENT

TP DB 100 DUP(?) STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR

START: PUSH DS SUB AX,AX PUSH AX

MOV DS,AX LEA BX,BUF

17

MOV CX,CONT-1 MOV AL,[BX] MOV AH,[BX+1] INC BX

CMP AH,AL JGE LOP1

XCHG AH,AL LOP1: INC BX

CMP AH,[BX] JGE LIS

XCHG AH,[BX] JMP LOP2

LIS: CMP AL,[BX] JLE LOP2

XCHG AL,[BX] LOP2: LOOP LOP1 MOV MAX,AH MOV MIN,AL RET MAIN ENDP CODE ENDS

END START

8.试编程实现从键盘接收N个(N≤50)8位二进制数,统计偶数的个数及偶数之和,并将统计的个数以十进制方式显示在屏幕上。 DATA SEGMENT

KEY1 DB 51 KEY2 DB ?

KEY3 DB 51 DUP(?) DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE

MAIN: MOV AX,DATA MOV DS,AX

MOV SI,OFFSET KEY1 MOV AH,0AH INT 21H

LEA BX,KEY3 XOR DX,DX MOV CL,KEY2 MOV CH,0

LP0: MOV AL,[SI] TEST AL,01H JNZ LP

ADD BL,AL MOV AL,BH ADD AL,1 DAA

MOV BH,AL LP: INC SI LOOP LP0 SHL AL,4 ADD AL,30H MOV DL,AL MOV AH,01 INT 21H

AND BH,0FH MOV DL,30H

18

ADD DL,BH MOV AH,1 INT 21H

MOV AH,4CH INT 21H CODE ENDS END MAIN 9.以STRING起始的字符串的最大长度为80个字符,字符串的结束用字符$表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格字符串中的位置(00H~4FH)存入POST单元;若无空格则将-1存入POST。

LEA BX,STRING MOV CX,80

NEXT1: MOV AL,[BX] CMP AL,’$’ JZ DONE

CMP AL,20H JZ NEXT INC BX

LOOP NEXT1 JMP DONE

NEXT: MOV POST,BL JMP END1

DONE: MOV POST,0FFH END1: ?? 10.BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY加入到BUFFER中去,并修改列的长度。

LEA SI,BUFFER MOV CL,[SI] INC SI

XOR CH,CH

NEXT: MOV AL,[SI] CMP AL,KEY JZ DONE INC SI

LOOP NEXT MOV AL,KEY MOV [SI],AL

INC BYTE PTR BUFFER DONE: ???。

11.利用移位及数据循环指令完成将DH AL中的16位二进制乘以8的运算,结果仍存入DH AL中。 MOV CX,3

NEXT: SHL AL,1 RCL DH,1 LOOP NEXT MOV AH,4CH INT 21H

12.分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。 DATA SEGMENT A0 DB 80 A1 DB ?

A DB 80 DUP(?) B0 DB 80 B1 DB ?

19

B DB 80 DUP(?) C DB 80 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA MAIN: MOV AX,DATA MOV DS,AX LEA DX,A0 MOV AH,0AH INT 21H

LEA DX,B0 MOV AH,0AH INT 21H CLC

LEA SI,A LEA BX,B LEA DI,C MOV CL,A1 XOR CH,CH NEXT: MOV AL,[SI] ADC AL,[BX] MOV [DI],AL INC BX INC SI INC DI

LOOP NEXT MOV CL,A1 XOR CH,CH LEA DI,C

N0: MOV DL,[DI] SHL DL,4 ADD DL,30H CMP DL,39H JNC N1

ADD DL,07H

N1: MOV AH,01H INT 21H

AND [DI],0FH MOV DL,[DI] ADD DL,30H CMP DL,39H JNC N2

ADD DL,07H N2: MOV AH,01H INT 21H INC DI LOOP N0

MOV AH,4CH INT 21H CODE ENDS END MAIN

13.编写程序,将键盘输入的小写字母用大写字母显示出来。 AGAIN: MOV AH,2

INT 21H

AND AL,11011111B MOV DL,AL MOV AH,1

20