微机实验答案
实验三 统计学生成绩
设有20个学生成绩分别56、78、67、40、87、99、63、51、74、100,90,80,68、88、55、66、84、96、45、73分。编写程序实现统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并分别存放在s5、s6、s7、s8、s9、s10单元中。
实验代码如下:
data
segment
score db 56,78,67,40,87,99,63, 51,74,100,90,80,68,88,55,66,84, 96,45,73
s5 db 0 s6 db 0 s7 db 0 s8 db 0 s9 db 0 s10 db 0 data ends
code segment
assume cs: code, ds: data start: mov ax,data mov ds,ax mov si,0 mov cx,20 lop1: cmp score[si],60 jb step1 cmp score[si],70 jb step2 cmp score[si],80 jb step3 cmp score[si],90
jb step4
实验四 查找字符
实验内容
试编写一个有主程序和子程序结构的程序模块。 cmp score[si],100 jb step5 inc [s10] jmp exit step1:inc [s5] jmp exit step2:inc [s6] jmp exit step3:inc [s7] jmp exit step4:inc [s8] jmp exit step5:inc [s9] exit: inc si loop lop1
mov al,s6 ; 显示s6,可用s5,s7, s8等替换(实验要求之思考题三) add al,48 mov dl,al mov ah,02 int 21h mov ah,4ch int 21h
主程序:要求从键盘接收一串字符并存于字节数组TABLE中,显示字符CHAR出现的次数。 子程序:在以TABLE为首地址的字节数组中查找CHAR,统计出现的次数。
实验代码如下: data
segment
table db 100 dup('$') str1 db 'please enter a string which is less than 100 and en d with enter button:$'
str2 db 'times that char appear is:$' n dw ? data
ends
stack segment stack 'stack' db 100 dup('$') stack ends code segment assume cs: code, ds: data start: mov ax,data
mov ds,ax
lea dx,str1 mov ah,9
int 21h ;输出 str1
call func1 ;回车,换行
mov si,0 mov cx,100 lop1: mov ah,1 int 21h cmp al,0dh
jz exit
mov table[si],al inc si
loop lop1 ;从键盘输入 exit: mov n,si
call func2 ;计算 'char' 出现的次数
call func1 ;回车,换行
lea dx,str2
mov ah,9 int 21h ;输出 str2
call func1 ;回车,换行
mov al,bl add al,30h mov dl,al mov ah,2
int 21h ;输出 'bx'
mov ah,4ch int 21h func1 proc near
push dx push ax mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h
pop ax pop dx
ret
func1 endp ;输出回车,换行
func2 proc near push si push cx push ax mov cx,si mov ax,si
sub ax,3 ;此处为何减3,下面会有解释
lea si,table mov bx,0
lop2: cmp byte ptr [si],'c'
jnz exit1 ;判断完c后加1再循环,而h,a,r则不然 inc si
cmp byte ptr [si],'h' jnz exit2 inc si
cmp byte ptr [si],'a' jnz exit2 inc si
cmp byte ptr [si],'r' jnz exit2
inc bx exit1: inc si exit2: cmp si,ax loopnz lop2
pop ax
pop cx pop si ret func2 endp code ends
end start
实验六 定时计数器实验
实验代码如下: .model small .386
code segment
assume cs: code
mov ds,ax
start: mov ax,data mov dx,203h mov al,00110110b out dx,al
mov dx,200h
mov ax,0h ; 0h 减1后得到FFH,从而满足题目要求 out dx,al mov al,ah out dx,al ;
mov dx,203h
mov al,01110110b
out dx,al mov dx,201h mov ax,fh out dx,al mov al,ah
out dx,al
mov ah,4ch int 21h end start
code ends
实验七 中断控制器实验
实验相关知识简介:
实验内容
1、单中断,使用单脉冲电路产生脉冲信号作为8259中断请求输入,每按一次单
脉冲按键,触发一次中断,使LED灯向左移一位,显示到最左端后再从最右端开始开始,循环显示。
2、单中断:使用单脉冲电路产生的脉冲信号作为386EX模块8259中断请求输入,
每按一次单脉冲按键,触发一次中断,使7段数码管显示的“5”字左移一位,显示到最左端后再从最右端开始显示,如此重复。
实验1代码: .Model Small .386
CODE SEGMENT ASSUME CS:CODE START:
IN AL,21H
AND AL,0DFH ; 开通IR5中断通道
OUT 21H,AL CLI
MOV AX,00H
MOV DS,AX MOV SI,4*35H MOV AX,OFFSET INTP
MOV [SI],AX ; 设置中断向量,将intp的偏移地址赋给[si] ADD SI,2
MOV AX,SEG INTP
MOV [SI],AX ; si+2后将段地址赋给[si] MOV DX,203H
MOV AL,10000011B ; 设置方式字 OUT DX,AL
MOV BL,1 ;设置bl的值,用于以后循环亮灯 STEP:
STI
HLT ; 等待中断信号,接到中断信号后重复该步骤 JMP STEP INTP PROC NEAR CLI
PUSH AX PUSH DX MOV AL,BL
MOV DX,200H ; 输出LED亮灯信号 OUT DX,AL
ROL BL,1 ; 循环左移,控制亮灯信号 MOV AL,20H
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生微机原理与接口技术实验报告及答案在线全文阅读。
相关推荐: