西南交大微机实验代码
更新时间:2023-09-07 07:53:01 阅读量: 教育文库 文档下载
实验2
开关实验:
io8255a equ 288h
io8255c equ 28ah
io8255z equ 28bh
code segment
assume cs:code
start:
mov dx,io8255z
mov al,8bh
out dx,al
inout:
mov dx,io8255c
in al,dx
mov dx,io8255a
out dx,al
mov dl,0ffh
mov ah,06h
int 21h
jz inout
mov ah,4ch
int 21h
code ends
end start
交通灯控制实验:
data segment
io8255c equ 28Ah
io8255z equ 28Bh
portc1 db 21h
db 81h,01h,81h,01h,81h,01h,81h,01h,81h,01h,81h,01h
db 44h
db 42h,40h,42h,40h,42h,40h,42h,40h,42h,40h,42h,40h
db 0ffh
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255z
mov al,90h
out dx,al
mov dx,io8255c
re_on:
mov bx,0;
on:
mov al,portc1[bx]
cmp al,0ffh
jz re_on
out dx,al
inc bx
mov cx,200
test al,24h
jz de1
mov cx,10000
de1: mov di,9000
de0:
dec di
jnz de0
loop de1
push dx
mov ah,06h
mov dl,0ffh
int 21h
pop dx
jz on
exit:mov ah,4ch
int 21h
code ends
end start
七段数码管静态显示实验:
io8255a equ 288h
io8255z equ 28bh
data segment
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
mesg1 db 0dh,0ah,’Input a num(0-9),other key is exit’,0dh,0ah,’$’ data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255z
mov ax,80h
out dx,al
sss:
mov dx,offset mesg1
mov ah,09h
int 21h
mov ah,01
int 21h
cmp al,’0’
jl exit
cmp al,’9’
jg exit
sub al,30h
mov bx,offset led
xlat
mov dx,io8255a
out dx,al
jmp sss
exit:
mov ah,4ch
int 21h
code ends
end start
数码管循环显示00—99
data segment
io8255a equ 288h
io8255b equ 289h
io8255c equ 28ah
io8255z equ 28bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
buffer1 db 0,0
bz dw 01,00
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255b ;将8255设为A口输出
mov al,80h
out dx,al
mov di,offset buffer1 ;设di为显示缓冲区
loop1: mov cx,0300h;循环次数
loop2: mov bh,02
lll: mov byte ptr bz,bh
push di
dec di
add di,bz
mov bl,[di] ;bl为要显示的数
pop di
mov bh,0
mov si,offset led;置led数码管偏移地址为SI
add si,bx;求出对应的led码
mov al,byte ptr[si]
mov dx,io8255c;自8255A的口输出
out dx,al
mov al,byte ptr bz ;使相应的数码管亮
mov dx,io8255a
out dx,al
push cx
mov cx,3000 ;若显示过快,可更改cx值最大为0ffffh
delay: loop delay ;延时
pop cx
mov bh,byte ptr bz
shr bh,1
jnz lll
loop loop2 ;循环延时
mov ax,word ptr[di]
mov ah,01
int 16h
jne exit ;有键按下转exit
mov ax,word ptr[di]
inc al
aaa
mov [di],al;al中为十位
mov [di+1],ah;ah中为个位
jmp loop1
exit: mov dx,io8255a
mov al,0;关掉数码管显示
out dx,al
mov ah,4ch;返回DOS
int 21h
code ends
end start
键盘接口实验(行扫描法)
data segment
io8255a equ 288h
io8255c equ 28ah
io8255z equ 28bh
key db 37h,38h,39h,41h,54h,52h
db 34h,35h,36h,42h,53h,4dh
db 31h,32h,33h,43h,48h,4ch
db 30h,46h,45h,44h,58h,4eh
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lp0:
mov dx,io8255z
mov al,90h
out dx,al
mov di,0
mov si,0
mov al,0
mov dx,io8255c
out dx,al
mov dx,io8255a
in al,dx
and al,00111111b
cmp al,00111111b
jz lp0
call delay
mov al,0
mov dx,io8255c
out dx,al
mov dx,io8255a
in al,dx
and al,00111111b
cmp al,00111111b
jz lp0
call delay
ABC: mov al,0
mov dx,io8255c
out dx,al
mov dx,io8255a
and al,00111111b
cmp al,00111111b
jz ABC
call delay
mov ah,11111110b;仅使A0输出0
mov cx,4;共四条行线
BCA: mov al,ah
mov dx,io8255c
out dx,al;输出行值
mov dx,io8255a
in al,dx;读入列值
and al,00111111b;保留低4位有效值
cmp al,00111111b;判断A0行是否有键按下
mov bl,al;有键按下,确定该键的值
rol ah;本行无键按下则继续查找下一行,循环左移(使下一行输出0)
loop BCA
jmp ABC
realy: mov dx,io8255c
in al,dx
nop
nop
nop
and al,0fh
cmp al,0fh
jnz realy
mov cx,4
mov al,bl
lp1: shr al,1
jnc lp2
inc di
loop lp1
lp2:
mov cx,6
mov al,ah
lp20:
shr al,1
jnc lp3
loop lp20
lp3:
mov bx,di
mov al,6
mul bl
add ax,si
disp:
mov bx,offset key
xlat
mov dh,0
mov dl,al
mov ah,2
int 21h
jmp lp0
exit:
mov ah,4ch
int 21h
delay proc near
push cx
mov cx,20h
l1: loop l1
pop cx
ret
delay endp
code ends
end start
3.1 脉冲个数记录实验
timer_ctl equ 283h
timer0 equ 280h
io8255z equ 28bh
io8255c equ 28ah
code segment
assume cs:code
start:
mov dx,io8255z
mov al,80h
out dx,al
mov al,00010000b
mov dx,timer_ctl
out dx,al
mov dx,timer0 3 实验
out dx,al
display:
mov al,00000000b
mov dx,timer_ctl
out dx,al
mov dx,timer0
in al,dx
mov bl,al
mov al,9
sub al,bl
mov dx,io8255c
out dx,al
mov ah,06h
mov dl,0ffh
int 21h
jz display
mov ah,4ch
int 21h
code ends
end start
3.2 可编程时钟发生器实验
timer_ctl equ 283h
timer0 equ 280h
timer1 equ 281h
mode03 equ 36h
mode12 equ 76h
code segment
assume cs:code
start:
mov dx,timer_ctl
mov al,mode03
out dx,al
mov dx,timer0
mov ax,500
out dx,al
mov al,ah
out dx,al
mov dx,timer_ctl
mov al,mode12
mov dx,timer1
mov ax,500
out dx,al
mov al,ah
out dx,al
mov ah,4ch
int 21h
code ends
end start
3.3 继电器实验
timer0 equ 280h
timer1 equ 281h
timerctl equ 283h
io8255a equ 288h
io8255z equ 28bh
code segment
assume cs:code
start:
mov dx,io8255z
mov al,90h
out dx,al
ll1:
mov al,0
out dx,al
call delay
mov al,1
out dx,al
call delay
jmp ll1
delay proc near
push dx
mov dx,timerctl
mov al,36h
out dx,al
mov dx,timer0
mov ax,1000
out dx,al
mov al,ah
out dx,al
mov dx,timerctl
mov al,70h
mov dx,timer1
mov ax,500
out dx,al
mov al,ah
out dx,al
ll2:
mov ah,06
mov dl,0ffh
int 21h
jne exit
mov dx,io8255a
in al,dx
and al,01
jz ll2
pop dx
ret
exit:
mov ah,4ch
int 21h
delay endp
code ends
end start
3.4 电子琴
data segment
io8255a equ 288h
io8255z equ 28bh
timer0 equ 280h
timerctl equ 283h
table dw 524,588,660,784,880,988,1048 ;高音的
;table dw 262,294,330,347,392,440,524 ;低音的
msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset msg
mov ah,9
int 21h
sing:
mov ah,7
int 21h
cmp al,1bh
je finish
cmp al,'1'
jl sing
cmp al,'8'
jg sing
sub al,32h
shl al,1
mov bl,al
mov bh,0
mov ax,4240H
mov dx,0FH
div word ptr[table+bx]
mov bx,ax
mov dx,timerctl
mov al,00110110B
out dx,al
mov dx,timer0
mov ax,bx
out dx,al
mov al,ah
out dx,al
mov dx,io8255z
mov al,10000000B
out dx,al
mov dx,io8255a
mov al,03h
out dx,al
call delay
mov al,0h
out dx,al
jmp sing
finish:
mov ax,4c00h
int 21h
delay proc near
push cx
push ax
mov ax,15
x1: mov cx,0ffffh
x2: dec cx
jnz x2
dec ax
jnz x1
pop ax
pop cx
ret
delay endp
code ends
end start
3.5 演奏乐曲实验
data segment
io8255a equ 288h
io8255z equ 28bh
timer0 equ 280h
timerctl equ 283h
;table dw 524,588,660,698,784,880,998,1048
table dw 262,294,330,347,392,440,494,524
;music_dataxxx db 1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,,2,2,1 music_datalzlh db 1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,5,1,2,5,1
mus_t1 db
50,50,50,100,50,50,50,100,50,50,25,50,50,25,15,15,15,15,50,25,15,15,15,15,50,25,50,75,50,50,70,50
;mus_t db
50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100
msg db 'xiao xing xing:',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset msg
mov ah,9
int 21h ;tishi
mov bx,0
push bx
sing:
pop bx
; mov si,offset music_dataxxx
mov si,offset music_datalzlh
add si,bx
push bx
mov al,byte ptr[si] ; que pu zhi
;cmp al,'1'
;jl sing
;cmp al,'8'
;jg sing
;sub al,31h
shl al,1
mov bl,al
mov bh,0
mov ax,4240h
mov dx,0fh
div word ptr[table+bx]
mov bx,ax
mov dx,timerctl
mov al,00110110B
out dx,al
mov dx,timer0
mov ax,bx
out dx,al
mov al,ah
out dx,al
mov dx,io8255z ;she zhi 8255
mov al,10000000B
out dx,al
mov dx,io8255a
out dx,al
lea si,mus_t1
;lea si,mus_t ;diao yon shi jian biao
mov bx,[si]
call MUS_D
;out dx,al
call delay
mov al,0h
out dx,al ;guan yang sheng qi
pop bx
cmp bx,42
je hehe
add bx,1
push bx
jmp sing
hehe:
mov bx,0
push bx
jmp sing
finish:
mov ax,4c00h
int 21h
MUS_D proc
Leng:
mov cx,2081
delay1: Loop delay1
dec bx
jnz Leng
ret
MUS_D endp
delay proc near
push cx
push ax
x1:mov cx,0ffffh
x2:dec cx
jnz x2
dec ax
jnz x1
pop ax
pop cx
ret
delay endp
code ends
end start
int00 equ 288h
int01 equ 289h
io8255c equ 282h
io8255z equ 283h
N equ 7
code segment
assume cs:code
start:
call I8255
cli
mov bx,0
call WRITE0B
call I8259
mov cl,0
sti
l1:
cmp cl,N
jnz l1
mov ah,4ch
int 21h
INT_SERVICE PROC
push dx
; mov dx,io8255c
;mov al,0FFH
;out dx,al
inc bx
mov al,bl
mov ah,bh
mov dx,io8255c 4 实验
NOP
NOP
NOP
mov al,20h
out 20h,al
NOP
pop dx
iret
NT_SERVICE ENDP
WRITE0B PROC
mov ax,code
mov ds,ax
mov dx,offset INT_SERVICE
mov ax,250bh
int 21h
ret
WRITE0B ENDP
I8255 PROC
mov al,80h
mov dx,io8255z
out dx,al
ret
I8255 ENDP
I8259 PROC
mov al,00010011b
mov dx,int00
out dx,al
mov al,8
mov dx,int01
out dx,al
mov al,00000001b
out dx,al
mov al,0
out dx,al
in al,21h
and al,0f7h
out 21h,al
ret
I8259 ENDP
code ends
end start
实验5
锯齿波:
io0832a equ 290h
code segment
assume cs:code
start:
mov cl,0
mov dx,io0832a
ll1:
mov al,cl
out dx,al
add cl,1
push dx
mov ah,06h ;判断是否有键按下 mov dl,0ffh
int 21h
pop dx
jz ll1
mov ah,4ch
int 21h
code ends
end start
正弦波:
data segment
io0832a equ 290h
sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h
db 00h,04h,09h,15h,25h,38h,4eh,66h
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
l1:
mov si,offset sin
mov bh,32
ll1:
mov al,[si]
mov dx,io0832a
out dx,al
mov ah,06h ;判断是否有键按下
mov dl,0ffh
int 21h
jne exit
mov cl,1
delay: loop delay
inc si
dec bh
jnz ll1
jmp l1
exit:
mov ah,4ch
int 21h
code ends
end start
直流电机转速控制:
data segment
io8032a equ 290h
io8255c equ 282h
io8255z equ 283h
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov al,85h ;8255初始化
mov dx,io8255z
out dx,al
lp1: mov dx,io8255c ;开关值赋给cx作为循环次数 in al,dx
mov ah,0
mov cx,ax
lp2: mov al,0ffh
mov dx,io8032a
out dx,al
mov ah,06h ;判断是否有键按下 mov dl,0ffh
int 21h
jne exit
loop lp2
lp3: mov cx,32
lp4: mov al,80h
mov dx,io8032a
out dx,al
mov ah,06h ;
mov dl,0ffh
int 21h
jne exit
loop lp4
jmp lp1
exit: mov ah,4ch
int 21h
code ends
end start
数模转换
io0809a equ 298h
code segment
assume cs:code
start:mov dx,io0809a
out dx,al
mov cx,0ffh
delay:loop delay
in al,dx
mov bl,al
mov cl,4
shr al,cl
call disp
mov al,bl
and al,0fh
call disp 判断是否有键按下 实验六
正在阅读:
西南交大微机实验代码09-07
2016会计继教(答案)96分政府综合财务报告编制操作指南(试行)03-01
备考2019年一建通信与广电管理实务高分经验+独家学习笔记 - 图文12-07
广西河池市中考语文试卷及答案讲解11-02
留守儿童教育问题与对策研究(2)05-20
毛概(2016年春)12-17
高温下的故事作文200字07-14
《海底两万里》读书心得范本参考03-25
博德之门2作弊02-01
你原来美若天仙作文400字06-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 西南交大
- 微机
- 实验
- 代码
- 第十章 访问调查法
- 2016安徽中考英语总复习教程第10课时八年级下Units1~2
- 基于校园网的高校思想教育工作的思考
- 回应社区需求缔造社区联结积极推动社区社会组织服务基层治理创新
- 矛盾纠纷分析研判制度
- 二年级语文下册《雷雨》第二课时教学设计
- 校园网络综合布线论文
- 治安学专业毕业生求职个人简历模板【封面+自荐书+简历+封底】
- 磁性材料和磁场简述
- 2015年执业药师中药学综合知识与技能考试真题汇编(带答案)
- 班组班前安全讲话记录(钢筋工、木工)
- 2014年山西省交通事故赔偿最新标准
- 39--小学德育工作的主要内容
- 商标管理制度
- 成本管理会计第十章习题参考答案
- 科学理论与实在论问题
- 灌注桩砼浇筑施工质量保证书
- 售后服务回访流程
- 大学生职业生涯规划范文-化工
- 2019届高考一轮复习备考讲义(全国用)人教A版 第十三章 推理与证明、算法、复数13.1含答案