计算机接口(部分实验)

;实验三:
;*******************************;
;* 8255方式0的C口输入,A口输出  *;
;*******************************;
io8255a        equ 288h
io8255c        equ 28ah
io8255        equ 28bhcode   segmentassume cs:code
start:  mov dx, 28bH       ;设8255为C口输入,A口输出;控制端口地址mov al,8bhout dx,al
inout:  mov dx, io8255c             ;从C口输入一数据in al,dxmov dx,io8255a             ;从A口输出刚才自C口out dx,al               ;所输入的数据mov dl,0ffh                ;判断是否有按键mov ah,06hint 21hjz inout                ;若无,则继续自C口输入,A口输出mov ax,4c00h              ;否则返回int 21h
code   endsend start

;实验九:
DATA            SEGMENT
IO8254_0        EQU     280H
IO8254_K        EQU     283H
DATA            ENDS
CODE            SEGMENTASSUME  CS:CODE,DS:DATA
START:          MOV       AX,DATAMOV       DS,AXMOV       AL, 14H      ;设置8254通道0为工作方式2,二进制计数MOV       DX, IO8254_K OUT       DX,ALMOV       DX,IO8254_0  ;送计数初值为0FHMOV       AL, 0FHOUT       DX,AL
LLL:            IN        AL,DX        ;读计数初值CALL      DISP         ;调显示子程序PUSH      DX  MOV       AH,06H MOV       DL,0FFHINT       21HPOP       DXJZ        LLLMOV       AX,4C00H     ;退出INT       21H
DISP            PROC      NEAR         ;显示子程序PUSH      DXAND       AL,0fh       ;首先取低四位MOV       DL,ALCMP       DL, 9         ;判断是否<=9JLE       NUM          ;若是则为'0'-'9',ASCII码加30HADD       DL,7         ;否则为'A'-'F',ASCII码加37H
NUM:            ADD       DL,30HMOV       AH,02H       ;显示INT       21HMOV       DL,0dh       ;加回车符INT       21HMOV       DL,0ah      ;加换行符INT       21HPOP       DXRET                    ;子程序返回
DISP            ENDP
CODE            ENDSEND       START
;************************;
;*8251串行通讯(自发自收)*;
;************************;
data segmentio8253a    equ 280hio8253b    equ 283hio8251a    equ 2b8hio8251b    equ 2b9hmes1 db 'you can press a key on the keybord!',0dh,0ah,24hmes2 dd  mes1
data ends
code segmentassume cs:code,ds:data
start:      mov ax,datamov ds,axmov dx,283h     ;设置8253计数器0工作方式mov al,16hout dx,almov dx,280h     ;给8253计数器0送初值mov al,52out dx,almov dx,2b9h     ;初始化8251xor al,almov cx,03     ;向8251控制端口送3个0delay:     call out1loop delaymov al,40h     ;向8251控制端口送40H,使其复位call out1mov al,4eh     ;设置为1个停止位,8个数据位,波特率因子为16call out1mov al,27h     ;向8251送控制字允许其发送和接收call out1lds dx,mes2     ;显示提示信mov ah,09int 21h
waiti:   mov dx,2b9hin al,dxtest al,01     ;发送是否准备好jz waitimov ah,01         ;是,从键盘上读一字符int 21hcmp al,27         ;若为ESC,结束jz exitmov dx,io8251ainc alout dx,al         ;发送mov cx,40h
s51:       loop s51          ;延时
next:      mov dx,io8251bin al,dxtest al,02     ;检查接收是否准备好jz next           ;没有,等待mov dx,io8251ain al,dx          ;准备好,接收mov dl,almov ah,02         ;将接收到的字符显示在屏幕上int 21hjmp waiti
exit:      mov ah,4ch        ;退出int 21h
out1 proc near       ;向外发送一字节的子程序out  dx,alpush cxmov  cx,40h
gg:       loop gg           ;延时pop  cxret
out1 endp
code ends
end start
;*******************************;
;*     DMA传送实验(输入)     *;
;*******************************;data segment
indata1 db 8 dup(30h),0dh,0ah,24h ;前面8个30h,然后是0dh 0ah 和24h
data ends
extra segment at 0d400h
indata2 db 11 dup(?)           ;开辟11个字节的内存区
extra ends
code segment
assume cs:code,ds:data,es:extra
start:mov ax,datamov ds,axmov ax,extramov es,axlea si,indata1lea di,indata2cldmov cx,11rep movsbmov ax,extramov ds,axmov al,00out 1ch,al            ;清字节指针mov al,49h          ;写方式字out 1bh,almov al,0dh            ;置地址页面寄存器out 83h,almov al,00out 12h,al            ;写入基地址的低十六位mov al,40hout 12h,almov ax,7              ;写入传送的8个字节数out 13h,al            ;先写低字节mov al,ahout 13h,al            ;后写高字节mov al,01             ;清通道屏蔽out 1ah,al            ;启动DMA
sss:    lea dx,indata2
lll:    mov ah,09int 21hmov ah,1int 16hje sss
exit:   mov ah,4chint 21hcode endsend start

数字电子时钟

http://www.doczj.com/doc/063226991-5.html

http://www.doczj.com/doc/268944014-13.html

红绿灯

# 8086-by-protues
基于8255,8259,8253的8086简易红绿灯系统
仿真实现结果描述
1)A通道的绿色数码管和B通道的红色数码管从5开始显示数字,B通道的红灯和A通道的绿灯同时点亮5秒钟,数码管显示的数字每秒减一。
2)A通道的绿色数码管和B通道的红色数码管显示的数字变为0后,A通道的蓝色数码管和B通道的红色数码管从3开始显示数字,此时A通道的黄灯亮,B通道持续红灯,持续三秒,数码管显示的数字每秒减一。
3)A通道的黄色数码管和B通道的红色数码管显示的数字变为0后,A通道的红色数码管和B通道的绿色数码管从5开始显示数字,此时A通道的红灯亮, B通道变为绿灯,持续5S,每秒数码管显示的数字减一。
5)A通道的红色数码管和B通道的绿色数码管显示的数字变为0后,A通道的红色数码管和B通道的黄色数码管从3开始显示数字,此时A通道的红灯亮,B通道黄灯亮,持续三秒,数码管显示的数字每秒减一。
6)A通道的红色数码管和B通道的黄色数码管显示的数字变为0后,又转去执行1),重复执行。
7)当按下INT6按钮两次时,所有方向的信号灯都变为红色,所有方向的红色数码管从5开始显示数字,每秒减一。当显示的数字变为0后,红绿灯恢复中断前的状态,继续执行。
8)当按下开关时,能自动从紧急状态中退出,恢复到原来的信号灯状态继续运行。
CODE    SEGMENT PUBLIC 'CODE'ASSUME CS:CODE,DS:DATA,SS:STACK
ORG 100H
START:; Write your code hereMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXCLI;中断向量PUSH DSMOV AX,0MOV DS,AXMOV BX,152MOV AX,OFFSET INT6MOV [BX],AXMOV AX,0MOV [BX+2],AXMOV BX,156MOV AX,OFFSET INT7MOV [BX],AXMOV AX,0MOV [BX+2],AXPOP DS;8259初始化MOV DX,CS8259AMOV AL,ICW1OUT DX,ALMOV DX,CS8259BMOV AL,ICW2OUT DX,ALMOV AL,ICW4OUT DX,ALMOV AL,OCW1OUT DX,ALSTI;8255—1MOV AL,80HMOV DX,CT_PORTOUT DX,AL;8255-2MOV AL,80HMOV DX,CT_PORT2OUT DX,AL;8255-3MOV AL,10000010BMOV DX,CT_PORT3OUT DX,AL;8253MOV AL,00110110B;CNT0MOV DX,CTLOUT DX,ALMOV AX,1000MOV DX,CNT0OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,01110110B;CNT1MOV DX,CTLOUT DX,ALMOV AX,1000MOV DX,CNT1OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,10010100B;CNT2MOV DX,CTLOUT DX,ALMOV AL,2MOV DX,CNT2OUT DX,ALMOV SI,1
ENDLESS:NOPSTI;MOV CX,6JMP ENDLESSINT6:	 ;中断服务PUSH AXPUSH BXPUSH CXPUSH DXSTIMOV DX,CTLMOV AL,01001100BOUT DX,AL;MOV DX,CT_PORT;MOV AL,10000000B;OUT DX,ALMOV DX,A_PORTMOV AL,00001001BOUT DX,ALMOV CX,6
NEXT6:	 MOV DX,B_PORT3IN AL,DXCMP AL,10000000BJBE EXLEA BX,BLOCK;清零MOV AL,[BX]MOV DX,B_PORTOUT DX,ALMOV DX,C_PORTOUT DX,ALMOV DX,B_PORT2OUT DX,ALMOV DX,A_PORT2OUT DX,AL;MOV AL,CLSUB AL,1XLATMOV DX,C_PORT2OUT DX,ALMOV DX,A_PORT3OUT DX,ALCALL DELAYLOOP NEXT6	 
EX:LEA BX,BLOCKMOV AL,[BX]MOV DX,C_PORT2OUT DX,ALMOV DX,A_PORT3OUT DX,ALMOV AL,20HMOV DX,CS8259AOUT DX,ALCLIPOP DXPOP CXPOP BXPOP AX;恢复红绿灯MOV AL,00110110B;CNT0MOV DX,CTLOUT DX,ALMOV AX,1000MOV DX,CNT0OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,01110110B;CNT1MOV DX,CTLOUT DX,ALMOV AX,1000MOV DX,CNT1OUT DX,ALMOV AL,AHOUT DX,ALSTIIRETINT7:    CLI;中断服务程序PUSH AXPUSH BXPUSH CXPUSH DXMOV CX,FLAGCMP CX,0JG A1MOV FLAG,20A1:	 ;A绿 B红DEC FLAGCMP CX,10JB B1SUB CX,10CMP CX,3JBE A2MOV AL,00001010BMOV DX,A_PORTOUT DX,ALMOV AL,CLSUB AL,4LEA BX,BLOCKXLATMOV DX,B_PORTOUT DX,ALMOV DX,C_PORT2OUT DX,ALJMP EXITA2:	;A黄 B红MOV AL,00001100BMOV DX,A_PORT	OUT DX,AL	MOV AL,CLLEA BX,BLOCKXLATMOV DX,C_PORTOUT DX,ALMOV DX,C_PORT2OUT DX,ALJMP EXITB1:	;A红 B绿CMP CX,3JBE B2MOV AL,00010001BMOV DX,A_PORT	OUT DX,ALMOV AL,CLSUB AL,4LEA BX,BLOCKXLATMOV DX,A_PORT3OUT DX,ALMOV DX,A_PORT2OUT DX,ALJMP EXITB2:	;A红 B黄MOV AL,00100001BMOV DX,A_PORT	OUT DX,AL	MOV AL,CLLEA BX,BLOCKXLATMOV DX,A_PORT3OUT DX,ALMOV DX,B_PORT2OUT DX,ALEXIT:	 MOV DX,CS8259AMOV AL,20HOUT DX,ALCLIPOP DXPOP CXPOP BXPOP AXSTIIRETDELAY PROCPUSH CXMOV CX,0LOOP $LOOP $LOOP $MOV CX,15000LOOP $POP CXRET
DELAY ENDPCODE    ENDS
DATA SEGMENT;8255-1A_PORT EQU 0A000H;Y2B_PORT EQU 0A002HC_PORT EQU 0A004HCT_PORT EQU 0A006H;8255-2A_PORT2 EQU 9000H;Y1B_PORT2 EQU 9002HC_PORT2 EQU 9004HCT_PORT2 EQU 9006H;8255-3A_PORT3 EQU 0C000H;Y4B_PORT3 EQU 0C002HC_PORT3 EQU 0C004HCT_PORT3 EQU 0C006H;8259CS8259A EQU 8000H;Y0CS8259B EQU 8002HICW1 EQU 00010011B ;边沿触发,单片,需要ICW4ICW2 EQU 00100000B ;中断向量地址20HICW4 EQU 00000001B ;非特殊全嵌套方式,非缓冲方式,非自动EOI,8086OCW1 EQU 00111111B ;允许6,7中断请求;8253CNT0 EQU 0B000H;Y3CNT1 EQU 0B002HCNT2 EQU 0B004HCTL EQU 0B006HFLAG DW 20TIME DW 5BLOCK DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H
DATA ENDS
STACK SEGMENTSTA DB 512 DUP(0FFH)TOP EQU $-STA
STACK ENDSEND START

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA高端项目:解码索尼IMX327 MIPI相机+2路视频融合叠加,提供开发板+工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理HLS多路视频融合叠加图像缓存HDMI输出工程…

【51单片机入门记录】RTC(实时时钟)-DS1302应用

目录 一、DS1302相关写函数 &#xff08;1&#xff09;Write&#xff3f;Ds1302 &#xff08;2&#xff09;Write&#xff3f;Ds1302&#xff3f;Byte 二、DS130相关数据操作流程及相关代码 &#xff08;1&#xff09;DS1302初始化数据操作流程及相关代码 (shijian[i]/10&…

20240406在Ubuntu20.04下让移远的4G模块EC200A-CN通过USB底板直接上网

20240406在Ubuntu20.04下让移远的4G模块EC200A-CN通过USB底板直接上网 2024/4/6 15:42 缘起&#xff1a;最近在调试全志H3平台在linux&#xff08;Ubuntu Core/openWRT&#xff09;下适配EC200A-CN。 以前调试移远的EC20的时候是先在Ubuntu下确认模块时好的&#xff0c;然后再开…

最新在线工具箱网站系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API&#xff0c;同时还自带免费API接口&#xff0c; 是一个多功能性工具程序&#xff0c;支持后台管理、上…

蓝凌OA单点登录实现方案:以统一身份管理提升效率与安全新举措

蓝凌OA的优势与挑战 在数字化浪潮的推动下&#xff0c;企业对于高效、安全的身份管理需求愈发迫切。蓝凌OA系统&#xff0c;以其出色的流程管理和协同办公能力&#xff0c;已经成为众多企业实现数字化转型的重要工具。然而&#xff0c;随着企业信息化建设的不断深入&#xff0…

配置vscode链接linux

1.安装 remote SSH 2.按F1 ssh ljh服务器公网ip 3. 选择保存远端host到本地 某位置 等待片刻后 4. 切换到远程资源管理器中 应该可以看到一台电脑&#xff0c;右键在当前窗口链接&#xff0c;输入你的服务器用户密码后电脑变绿说明远程连接成功 5.一定要登陆上云服务器后再…

错误:找不到或无法加载主类(vscode的解决方法)

项目场景&#xff1a; 某天&#xff0c;喵某人在敲代码的过程中&#xff0c;点击运行代码&#xff0c;突然显示找不到或无法加载主类。之前创建的java文件都可以正常运行。但新建的java文件无论是什么&#xff0c;点击运行都会显示“错误&#xff1a;找不到或无法加载主类”。 …

深入剖析:HTML页面从用户请求到完整呈现的多阶段加载与渲染全流程详解

HTML页面的加载全过程是一个涉及网络通信、文件解析、资源加载、渲染树构建、布局计算以及最终绘制等多个环节的复杂过程。以下是详细的步骤说明&#xff1a; 1. 用户输入URL并发送请求 用户在浏览器地址栏输入一个URL&#xff08;统一资源定位符&#xff09;&#xff0c;或者…

【内存泄漏】数据库连接connectionPhantomRefs内存过大

1. 问题背景 线上出现内存报警&#xff0c;内存增长曲线如下 dump内存文件&#xff0c;临时重新发布服务。后经排查发现是数据库连接池设置不合理以及mysql-connector-java 5.1.49有内存泄漏bug。以下为对此问题的分析及问题总结。 1.1 应用背景 数据库连接池&#xff1a; …

[StartingPoint][Tier1]Ignition

Task 1 Which service version is found to be running on port 80? (发现哪个服务版本在端口 80 上运行&#xff1f;) $ nmap -sV -Pn 10.129.1.27 -p 80 nginx 1.14.2 Task 2 What is the 3-digit HTTP status code returned when you visit http://{machine IP}/? (访…

Centos7下docker安装jenkins

个人记录 安装Docker与Docker-compose Centos7安装Docker与Docker-compose【图文教程】 配置docker-compose.yml vim docker-compose.yml按i进行编辑模式&#xff0c;粘贴如下内容 version: 3 services:jenkins:image: jenkinsci/blueoceancontainer_name: jenkinsrestart…

剑指Offer题目笔记26(动态规划的基础知识)

面试题88&#xff1a; 问题&#xff1a; ​ 一个数组cost的所有数字都是正数&#xff0c;它的第i个数字表示在一个楼梯的第i级台阶往上爬的成本&#xff0c;在支付了成本cost[i]之后可以从第i级台阶往上爬1级或2级。请计算爬上该楼梯的最少成本。 解决方案一&#xff1a;&…

Java | Leetcode Java题解之第9题回文数

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isPalindrome(int x) {// 特殊情况&#xff1a;// 如上所述&#xff0c;当 x < 0 时&#xff0c;x 不是回文数。// 同样地&#xff0c;如果数字的最后一位是 0&#xff0c;为了使该数字为回文&#xff0…

Linux:数据链路层

文章目录 路由表数据链路层分片mac帧报头ARP协议ARP的周边话题 路由表 当主机a想要发送消息到主机b&#xff0c;这一整个过程中&#xff0c;数据报文在进行传输的过程实际上是一跳一跳的过去的&#xff0c;而报文可能会经过公网进行传递&#xff0c;本质上这些网络都是靠对应的…

【python毕业设计】基于Python的医院信息管理系统的设计与实现(源码+数据库+毕业论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Google视觉机器人超级汇总:从RT、RT-2到AutoRT、SARA-RT、RT-Trajectory

前言 随着对视觉语言机器人研究的深入&#xff0c;发现Google的工作很值得深挖&#xff0c;比如RT-2 ​想到很多工作都是站在Google的肩上做产品和应用&#xff0c;​Google真是科技进步的核心推动力&#xff0c;做了大量大模型的基础设施&#xff0c;服 故有了本文&#xf…

【前端Vue】Vue0基础完整教程第5篇:vue指令(下),成绩案例【附代码文档】

Vue从0基础到大神学习完整教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;vue基本概念&#xff0c;vue-cli的使用&#xff0c;vue的插值表达式&#xff0c;{{ gaga }}&#xff0c;{{ if (obj.age > 18 ) { } }}&#xff0c;vue指令&#xff0c;综合…

更高效、更简洁的 SQL 语句编写丨DolphinDB 基于宏变量的元编程模式详解

元编程&#xff08;Metaprogramming&#xff09;指在程序运行时操作或者创建程序的一种编程技术&#xff0c;简而言之就是使用代码编写代码。通过元编程将原本静态的代码通过动态的脚本生成&#xff0c;使程序员可以创建更加灵活的代码以提升编程效率。 在 DolphinDB 中&#…

【Python系列】将生成的 JSON 数据写入 JSON 文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

面试经典-Spring篇

1、解释Spring框架中bean的生命周期 实例化 通过反射去推断构造函数进行实例化 实例工厂、静态工厂 属性赋值 解析自动装配&#xff08;byname、bytype、 constractor、 Autowired&#xff09; 循环依赖 初始化 调用XXXAware回调方法&#xff08;BeanNameAware、BeanFactoryAw…