教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

西南交大微机实验代码

来源:网络收集 时间:2026-03-10
导读: 实验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 a

实验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,time …… 此处隐藏:3356字,全部文档内容请下载后查看。喜欢就下载吧 ……

西南交大微机实验代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/40011.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)