微机原理上机考试题库及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、已知AX=4000H,BX=8000H,编写程序互换AX与BX寄存器的内容。要求使用MOV指令实现。
CODE SEGMENT
Assume CS:CODE
START: MOV AX,4000H
MOV BX,8000H
MOV CX,AX
MOV AX,BX
MOV BX,CX
MOV AH,4CH
INT 21H
CODE ENDS
END START

2、已知AX=4000H,BX=8000H,编写程序互换AX与BX寄存器的内容。要求使用PUSH和POP指令实现。
CODE SEGMENT
Assume CS:CODE
START: MOV AX,4000H
MOV BX,8000H
PUSH AX
PUSH BX
POP AX
POP BX
MOV AH,4CH
INT 21H
CODE ENDS
END START

3、设有以下定义的数据段,编写程序将5的平方值取出送AX寄存器。
(TABLE DB 0,1,4,9,16,25,36,49,64,81)
DATA SEGMENT
TABLE DB 0,1,4,9,16,25,36,49,64,81
DATA ENDS
CODE SEGMENT
Assume CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
MOV AL,[SI+5]
AND AX,00FFH
MOV AH,4CH
INT 21H
CODE ENDS
END START

4、设有以下定义的数据段,编写程序将9的平方值取出送AX寄存器。
(TABLE DB 0,1,4,9,16,25,36,49,64,81)
DATA SEGMENT
TABLE DB 0,1,4,9,16,25,36,49,64,81
DATA ENDS
CODE SEGMENT
Assume CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
MOV AL,[SI+9]
AND AX,00FFH
MOV AH,4CH
INT 21H
CODE ENDS
END START

5、设有字符串 STRING DB 'I AM A STUDENT!',编写程序将其中的大写字母转换成小写字母并保存回原内存单元。
DATA SEGMENT
STRING DB 'I AM A STUDENT!'
LEN EQU $-STRING
DATA ENDS
CODE SEGMENT
Assume CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET STRING
MOV CX,LEN
NEXT: MOV AL,[BX]
CMP AL,'A'
JB LOP
CMP AL,'Z'
JA LOP
ADD AL,20H
MOV [BX],AL
LOP: INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START


6、设有字符串 STRING DB 'I am a student!',编写程序将其中的小写字母转换成大写字母并保存回原内存单元。
DATA SEGMENT
STRING DB 'I am a student!'
LEN EQU $-STRING
DATA ENDS
CODE SEGMENT
Assume CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET STRING
MOV CX,LEN
NEXT: MOV AL,[BX]
CMP AL,'a'
JB LOP
CMP AL,'z'
JA LOP
SUB AL,20H
MOV [BX],AL
LOP: INC BX
DEC CX
JNZ NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START


7、设有字符串 STRING DB 'I AM A STUDENT!',编写程序将其中的大写字母转换成小写字母并用DOS9号功能调用输出显示该字符串。
DATA SEGMENT
STRING DB 'I AM A STUDENT!$'
LEN EQU $-STRING
DATA ENDS
CODE SEGMENT
Assume CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX

MOV BX,OFFSET STRING
MOV CX,LEN
NEXT: MOV AL,[BX]
CMP AL,'A'
JB LOP
CMP AL,'Z'
JA LOP
ADD AL,20H
MOV [BX],AL
LOP: INC BX
DEC CX
JNZ NEXT
MOV DX,offset STRING
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START



8、从键盘输入一个字符,是回车键退出,否则判断其是大写字母、小写字母还是其他字符,并输出显示相应的提示字符串。
DATA SEGMENT
INFOR1 DB 0AH,0DH, 'Please input a letter:$' ;0AH为换行,0DH为回车
INFOR2 DB 0AH,0DH, 'You input a uppercase letter! $' ;输入大写字母
INFOR3 DB 0AH,0DH, 'You input a lowercase letter! $' ;输入小写字母
INFOR4 DB 0ah,0dh, 'You input other letter! $' ;输入其他字符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,09H ;输出字符串
INT 21H
MOV AH,01H ;输入字符
INT 21H
CMP AL,0DH
JZ NEXT
CMP AL, 'A'
JB OTHER
CMP AL, 'Z'
JBE UPPER
CMP AL, 'a'
JB OTHER
CMP AL, 'z'
JBE LOWER
UPPER: MOV DX,OFFSET INFOR2
MOV AH,09H
INT 21H
JMP NEXT
LOWER: MOV DX,OFFSET INFOR3
MOV AH,09H
INT 21H
JMP NEXT
OTHER: MOV DX,OFFSET INFOR4
MOV AH,09H
INT 21H

NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START




9、从键盘输入一个字符,是回车键退出,否则判断其是数字、大写字母还是其他字符,并输出显示相应的提示字符串。
DATA SEGMENT
INFOR1 DB 0AH,0DH, 'Please input a letter:$' ;0AH为换行,0DH为回车
INFOR2 DB 0AH,0DH, 'You input a digit!$' ;输入数字
INFOR3 DB 0AH,0DH, 'You input a uppercase letter! $' ;输入大写字母
INFOR4 DB 0ah,0dh, 'You input other letter! $' ;输入其他字符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,09H ;输出字符串
INT 21H
MOV AH,01H ;输入字符
INT 21H
CMP AL,0DH
JZ NEXT
CMP AL, '0'
JB OTHER ;小于0
CMP AL, '9'
JBE DIGIT ;大于等于0,小于等于9,为数字
CMP AL, 'A'
JB OTHER
CMP AL, 'Z'
JBE UPPER
DIGIT: MOV DX,OFFSET INFOR2
MOV AH,09H
INT 21H
JMP NEXT
UPPER: MOV DX,OFFSET INFOR3
MOV AH,09H
INT 21H
JMP NEXT
OTHER: MOV DX,OFFSET INFOR4
MOV AH,09H
INT 21H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START

10、从键盘输入一个字符,是回车键退出,否则判断其是数字、小写字母

还是其他字符,并输出显示相应的提示字符串。
DATA SEGMENT
INFOR1 DB 0AH,0DH, 'Please input a letter:$' ;0AH为换行,0DH为回车
INFOR2 DB 0AH,0DH, 'You input a digit! $' ;输入数字
INFOR3 DB 0AH,0DH, 'You input a lowercase letter! $' ;输入小写字母
INFOR4 DB 0ah,0dh, 'You input other letter! $' ;输入其他字符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,09H ;输出字符串
INT 21H
MOV AH,01H ;输入字符
INT 21H
CMP AL,0DH
JZ NEXT
CMP AL, '0'
JB OTHER ;小于0
CMP AL, '9'
JBE DIGIT ;大于等于0,小于等于9,为数字
CMP AL, 'a'
JB OTHER
CMP AL, 'z'
JBE LOWER
DIGIT: MOV DX,OFFSET INFOR2
MOV AH,09H
INT 21H
JMP NEXT
LOWER: MOV DX,OFFSET INFOR3
MOV AH,09H
INT 21H
JMP NEXT
OTHER: MOV DX,OFFSET INFOR4
MOV AH,09H
INT 21H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START

11、在数据段中有一变量名为A的字符串(字符串内容自己定义),编程实现将这些字符以相反的次序传送到数据段变量名为B的内存中。
DATA SEGMENT
A DB '123456789'
N EQU $-A
B DB N DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,A
LEA DI,B
ADD DI,N-1
MOV CX,N
AGAIN: MOV AL,[SI]
MOV [DI],AL
INC SI
DEC DI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

12、编写程序,将内存中偏移地址为1000H开始的连续100个字节送往1050H开始的连续100个字节的内存单元中。(提示:需判断数据区有无重叠)

13、编写程序,将内存中偏移地址为1000H开始的连续100个字节送往2000H开始的连续100个字节的内存单元中。(提示:需判断数据区有无重叠)

14、编写程序,将内存中偏移地址为1050H开始的连续100个字节送往1000H开始的连续100个字节的内存单元中。(提示:需判断数据区有无重叠)

15、在数据段中连续存放着10个无符号数,编程找出其中的最大数,并将其存放在该数据区的后面。
DATA SEGMENT
BUF DB 12H,34H,7H,25H,56H,2H,0H,18H,3H,55H
MAX DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,10
AGAIN: MOV AL,[SI]
CMP AL,MAX
JB NEXT ;AX中的数小
MOV MAX,AL ;把AX中较大的数送入MAX中
NEXT: INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

16、在数据段中连续存放着10个无符号数,编程找出其中的最小数,并将其存放在该数据区的后面。
DATA SEGME

NT
BUF DW 12H,34H,07H,25H,56H,02H,01H,18H,03H,55H
MIN DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,10
MOV AX,[SI]
MOV MIN,AX ;先把第一个数据存入MIN中
AGAIN: MOV AX,[SI]
CMP AX,MIN
JA NEXT ;若AX中的数大,则跳转
MOV MIN,AX ;若AX中的数较小,则送入MIN中
NEXT: INC SI
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

17、在数据段中连续存放着10个有符号数,编程找出其中的最大数,并将其存放在该数据区的后面。
DATA SEGMENT
BUF DW 3,5,-2,7,0,-1,-7,9,-4,8
MAX DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,10
MOV AX,[SI]
MOV MAX,AX ;先把第一个数据存入MAX中
AGAIN: MOV AX,[SI]
CMP AX,MAX
JL NEXT ;若AX中的数小,则转移
MOV MAX,AX ;若AX中的数较大,则送入MAX中
NEXT: INC SI
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START

18、在数据段中连续存放着10个有符号数,编程数出其中的正数的个数,并将其存放在该数据区的后面。
DATA SEGMENT
BUF DB 3,5,-2,7,0,-1,-7,9,-4,8
N EQU $-BUF
NUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,BUF
MOV CX,N
MOV AX,0 ;AX存放正数的个数,初始化为
AGAIN: CMP BYTE PTR[SI],0
JNG NEXT ;为负数,跳到NEXT
INC AX ;为正数,AX加1
NEXT: INC SI
LOOP AGAIN
MOV NUM,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START

19、编程实现由键盘输入任意一个字符,将该字符的ASCII码以十六进制形式显示在屏幕上。

20、编程实现由键盘输入任意一个字符,将该字符的ASCII码以二进制形式显示在屏幕上。

21、编程实现由键盘输入任意一个字符,是回车键时退出,否则判断其是不是一个数字,如果是则输出显示这个数字,如果不是则输出显示一个提示字符串(自己定义)。

22、编程实现由键盘输入任意一个字符,是回车键时退出,否则判断其是不是一个大写字母,如果是则转换成小写字母后输出显示,如果不是则输出显示一个提示字符串(自己定义)。

23、编程实现由键盘输入任意一个字符,是回车键时退出,否则判断其是不是一个小写字母,如果是则转换成大写字母后输出显示,如果不是则输出显示一个提示字符串(自己定义)。

24、使用一片61256芯片,为8088CPU扩展32k*8的内存,要求扩展芯片的地址为8000H-FFFFH。编写程序对扩展的存储器8000H开始的连续256个字节写入测试数据。说明:CPU与61256之间的

数据线,地址线,读写控制信号线的连接,将该部分答案编辑成一个文本文件,并以24.TXT为文件名存盘,同24.ASM,24.OBJ,24.EXE一同压缩为压缩文件。

相关文档
最新文档