news 2026/7/1 19:23:59

汇编语言实验端口和中断调用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
汇编语言实验端口和中断调用

一、实验目的

  1. 能够通过端口访问外设信息
  2. 能够通过中断调用进行输入输出
  • 实验内容过程记录

任务1:计算机电子琴程序——编写程序,程序运行时使PC机成为一架可弹奏的电子琴,当按下数字键1-8时,依次发出8个音调,按ESC则退出程序。

程序设计思路:

对于第一部分提前存好音符的频率数据。用DOS功能等待键盘按键,按ESC直接退出程序只识别数字1-8,把按键数字转成数组里的位置然后发声。

第二部分分三组存放低、中、高三套音符频率。改用BIOS键盘读取,靠扫描码识别按键,不受字母ASCII乱序影响。

第三部分在拓展1代码基础上,加一个标记变量记录当前音调档位。按下数字1/2/3,修改标记,分别对应低/中/高音三套音符。

源程序:

assume cs:codeseg

data segment

dw 262,294,330,349,392,440,494,524

codeseg segment

start: mov ax, data

mov ds, ax

mov si,0

play:

mov ah,1

int 21h;使用的dos输入,所以al存的ascii码

cmp al,1bh

je over

cmp al,'8'

ja play

cmp al,'1'

jb play

sub al,30h;把ascii码转换成数字

dec al;减一从0开始

mov bl,2;占两个

mul bl;×2

mov si,ax

mov al,0b6h ;8253芯片初始化

out 43h,al ;43H是8253芯片控制口的端口地址

mov dx,12h

mov ax,34dch

div word ptr [si] ;除以数据区中的数值,以获得声音的频率值

out 42h, al

mov al, ah

out 42h, al ;分两次向42H端口输出1个字,用于设置频率

in al, 61h ;读设备控制器端口原值

mov ah, al ;保存原值

or al, 3 ;打开扬声器和定时器

out 61h, al ;接通扬声器,发声

mov dx, 10 ;延时

delay0: mov cx, 30000

delay1:

nop

loop delay1

dec dx

jne delay0

mov al, ah ;恢复端口原值

out 61h, al

jmp play

over:mov ax, 4c00h

int 21h

codeseg ends

end start

遇到的问题

一开始用ASCII判断字母按键识别不全,后来换成扫描码了就能正常识别。跳转距离过长,编译报错,拆分跳转语句解决越界问题

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 20:54:36

2026年,哪一家公司的2路电瓶车充电桩才是真正好用之选?

在电瓶车日益普及的今天,2路电瓶车充电桩的需求也越来越大。面对市场上众多的品牌和产品,消费者在2026年该如何选择真正好用的2路电瓶车充电桩呢?接下来,我们将通过多方面的对比和分析,为大家揭晓答案。一、安全性是首…

作者头像 李华
网站建设 2026/6/27 20:41:24

Ray Adapter性能优化秘籍:华为硬件深度优化的10个技巧

Ray Adapter性能优化秘籍:华为硬件深度优化的10个技巧 【免费下载链接】ray-adapter Compatible with the core interfaces of the open-source software Ray, it facilitates the seamless migration of workloads running on Ray (such as vllm/verl, etc.) to th…

作者头像 李华
网站建设 2026/6/27 20:41:15

openeuler/ubs-virt核心功能揭秘:虚拟化与池化技术入门教程

openeuler/ubs-virt核心功能揭秘:虚拟化与池化技术入门教程 【免费下载链接】ubs-virt Ubs-virt supports virtualization and pooling, live migration policy decision, fast recovery and disaester recovery, and fast communication between VMs and container…

作者头像 李华
网站建设 2026/6/27 20:39:30

IB-Robot故障排查指南:常见问题与解决方案大全

IB-Robot故障排查指南:常见问题与解决方案大全 【免费下载链接】IB_Robot Save the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked version of …

作者头像 李华
网站建设 2026/6/27 20:38:27

一文读懂UBTurbo配置:从权限管理到安全参数的全面配置清单

一文读懂UBTurbo配置:从权限管理到安全参数的全面配置清单 【免费下载链接】ubturbo UB Turbo is based on the hardware-enhanced hot and cold identification capabilities, providing hierarchical memory management, including memory migration, hot and col…

作者头像 李华
网站建设 2026/6/27 20:34:52

英语基础差,还能学习网络安全攻防技术吗?

不懂英语,真的不能学黑客技术吗? 很多想入门网络安全(俗称 “黑客技术”)的朋友,第一步就被 “英语门槛” 吓退了:“代码全是英文,工具界面也是英文,我英语差得一批,肯定…

作者头像 李华