汇编语言与微机原理实验五:键盘按键与数码管显示

简介: 汇编语言与微机原理实验五:键盘按键与数码管显示

实验目的

熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。

掌握矩阵式键盘工作原理及识别按键的方法。

掌握8段数码管显示数字或字符的工作原理和它的使用方法。

掌握用8255扫描键盘及用8255刷新数码管的显示方法。

实验要求

在2*8(看着像4*4,实际上是2*8)的小键盘上按下按键,该键的值同时显示在8个数码管上。按键松开时显示上一次的按键值。

.Model tiny
.data
.stack 100 
segtab db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,0h,0c6h,40h,86h,8eh
keycode dw 0fe02h,0fd02h,0fb02h,0f702h,0ef02h,0df02h,0bf02h,7f02h 
  dw 0fe01h,0fd01h,0fb01h,0f701h,0ef01h,0df01h,0bf01h,7f01h
.CODE
start:
  mov ax,@data
  mov ds,ax
  mov es,ax
  mov dx,273h
  mov al,81h
  out dx,al
wait1:
  call scankey
  cmp ax,-1
  jz wait1
  call translate
  call led_disp
  jmp wait1
  mov ax,4c00h
  int 21h
scankey proc near
  push cx
  push dx
  mov dx,271h
  mov al,0
  out dx,al
  mov dx,272h
  in al,dx
  and al,00000011B
  cmp al,00000011B
  jz no_key
  in al,dx
  and al,00000011B
  cmp al,00000011B
  jz no_key
  mov ah,0feh
  mov cx,8
next:
  mov al,ah
  rol ah,1
  mov dx,271h
  out dx,al
  mov dx,272h
  in al,dx
  and al,03H
  cmp al,03H
  loopz next
  jz no_key
  ror ah,1
  jmp exit
no_key:
  mov ax,-1
exit:
  pop dx
  pop cx
  ret
  scankey endp
translate proc
  push cx
  mov cx,16
  lea si,segtab-1
  lea di,keycode-2
scantab:inc si
  inc di
  inc di
  cmp ax,[di]
  loopnz scantab
  mov dl,[si]
  pop cx
  ret
translate endp
led_disp proc
  push bx
  push ax
  mov bl,dl
  mov al,0ffh
  mov dx,271h
  out dx,al
  mov al,bl
  mov dx,270h
  out dx,al
  mov al,0h
  mov dx,271h
  out dx,al
  pop ax
  pop bx
  ret
led_disp endp 
end start


目录
相关文章
|
1月前
|
存储 缓存 安全
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
|
10月前
|
算法 vr&ar 网络架构
汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】
汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】
77 0
【8086汇编】《汇编语言(第三版)》实验一
需要用到的指令✨✨ 查看、修改CPU中寄存器的内容:R命令 查看内存中的内容:D命令 修改内存中的内容:E命令(可以写入数据、指令,在内存中,它们实际上没有区别) 将内存中的内容解释为机器指令和对应的汇编指令:U命令 执行CS:IP指向的内存单元处的指令:T命令 以汇编指令的形式向内存中写入指令:A命令
汇编语言与微机原理实验四:8259单脉冲触发中断
汇编语言与微机原理实验四:8259单脉冲触发中断
125 0
汇编语言与微机原理实验一、实验二、实验三:分支程序设计/循环程序设计/子程序设计
汇编语言与微机原理实验一、实验二、实验三:分支程序设计/循环程序设计/子程序设计
153 0
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(二)
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(二)
137 0
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(二)
|
存储 Ubuntu Linux
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(一)
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(一)
190 0
超详细汇编注释 操作系统实验二 操作系统的引导(哈工大李治军)(一)
汇编实验三
实验3 数据传送指令练习 一、实验目的: 1.熟悉IBM PC机的数据传送指令的使用。 2. 掌握堆栈的作用。 3.掌握堆栈指示器SP和堆栈操作指令PUSH、POP。 二、实验内容: 1.将数据段中偏移地址为0000H的连续三个字节内容传送至该段偏移地址为0003H的连续三个字节单元中。要求使用直接寻址、寄存器间接寻址方式。
138 0
汇编实验三
|
Ruby
汇编实验2 寻址方式练习
实验目的: 1.理解存储器分段及寻址方式的意义 2.熟练掌握立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址等几种寻址方式。 3.复习巩固DEBUG中的R、D、E命令。 4.掌握用A命令编制程序,U命令进行反汇编,用G、T命令执行程序。
228 0
汇编实验2 寻址方式练习
|
存储
汇编实验一 DEBUG调试工具的使用
一、实验目的 1.学习使用DEBUG程序的各种命令。 2.了解计算机取指令、执行指令的工作过程。 3.掌握用DEBUG调试工具自编程序的方法。
330 0
汇编实验一 DEBUG调试工具的使用