西电微机原理实验三
2023-12-16 22:29:29
西电微机原理实验三
实验室:EⅡ-522
实验要求
- 开关Yi为低电平时对应的发光二极管亮,Yi为高电平时对应的发光二极管灭。
- 当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。
- 当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。
- 自主设计控制及显示模式,完成编程调试,演示实验结果。
我没做要求1,当开关Yi不是全为低电平和高电平时,发光二极管Qi按1423的顺序点亮,这里可以按照自己的需求改,可以把剩下的四个也加上去,顺序也可以改,如果你要做要求1,开关Yi为某特定值时跳转Light更好(在实验四中实现类似功能)
代码
IO244 equ 230h ;244
IO273 equ 230h ;273
_stack segment stack
dw 100 DUP(?)
_stack ends
_data segment word public 'DATA'
_data ends
code segment
main proc
assume cs:code,ds:_data,ss:_stack
; 初始化寄存器
mov ax,_data
mov ds,ax
mov bx,0fefeh
start: mov dx,IO244 ; 读取244引脚的输入值
in al,dx
mov ah,al
cmp al,0ffh ; 判断输入值是否为0xff,如果不是,则进行翻转操作
jnz Next0
call ROLeft ; 调用ROLeft函数进行左移操作
jmp Next2
Next0: cmp al,0 ; 判断输入值是否为0,如果不是,跳转Next1
jnz Next1
call RORight
jmp Next2
Next1: call Light
Next2: call Delay
jmp start
main endp
ROLeft proc near
; 左移bl寄存器,并将结果存储在al寄存器中
rol bl,1
mov al,bl
; 输出左移后的值到273引脚
mov dx,IO273
out dx,ax
ret
ROLeft endp
RORight proc near
; 右移bl寄存器,并将结果存储在al寄存器中
ror bl,1
mov al,bl
mov dx,IO273
out dx,ax
ret
RORight endp
Light proc near
xor bh,1 ;bx高八位与1异或
mov al,bh
mov dx,IO273
out dx,ax
call Delay
xor bh,8
mov al,bh
mov dx,IO273
out dx,ax
call Delay
xor bh,2
mov al,bh
mov dx,IO273
out dx,ax
call Delay
xor bh,4
mov al,bh
mov dx,IO273
out dx,ax
call Delay
ret
Light endp
Delay proc near
xor cx,cx
delay1: loop delay1
ret
Delay endp
code ends
END main
文章来源:https://blog.csdn.net/m0_62201229/article/details/135038259
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!