實驗三 I/O地址譯碼

一、實驗目的 ??????????????

掌握I/O地址譯碼電路的工作原理。

二、實驗電路

實驗電路如圖1所示,其中74LS74為D觸發器,可直接使用實驗臺上數字電路實驗區的D觸發器,74LS138為地址譯碼器, Y0:280H~287H,Y1:288H~28FH,Y2:290H~297H,Y3:298H~29FH,Y4:2A0H~2A7H,Y5:2A8H~2AFH,Y6:2B0H~2B7H,Y7:2B8H~2BFH。

三、實驗內容

CPU執行I/O指令且地址在280H~2BFH范圍內,譯碼器選中,必有一根譯碼線輸出負脈沖。利用這個負脈沖控制L7發光二極管閃爍發光(亮、滅、亮、滅…),時間間隔通過軟件延時實現。

四、編程提示

1.實驗電路中D觸發器CLK端輸入脈沖Y4,上升沿使Q端輸出高電平L7發光,CD端加低電平L7滅。

2. 執行下面兩條指令

?????????? MOV? DX,2A0H

?????????? OUT? DX,AL(或IN? AL,DX)

Y4輸出一個負脈沖。

執行下面兩條指令

?????????? MOV? DX,2A8H

?????????? OUT? DX,AL(或IN? AL,DX)

Y5輸出一個負脈沖。

五、實驗程序(必須加注釋)和結果

; 定義輸出端口1的地址

outport1 equ 2a0h

; 定義輸出端口2的地址

outport2 equ 2a8h

; 數據段定義

DATAS SEGMENT

??? ; 定義字符串mess1

??? mess1 DB 'Kruanjian221? Liuxijing 2022900616 AND HuTiaWen2022900615',0DH,0AH,'$'

??? ; 定義字符串mess2

??? mess2 DB 'end with any key',0DH,0AH,'$'

??? ; 定義字符串mess3

??? mess3 DB 'over',0DH,0AH,'$'

DATAS ENDS

; 代碼段定義

code segment

??? assume cs:code

start:

??? ; 將數據段地址賦給ax

??? MOV ax,DATAS

??? ; 將ax的值賦給ds

??? MOV ds,ax

??? ; 設置ah為9,準備調用21h中斷顯示字符串

??? MOV ah,9

??? ; 將mess1的偏移地址賦給dx

??? MOV dx,offset mess1

??? ; 調用21h中斷顯示字符串

??? int 21h

??? ; 設置ah為9,準備調用21h中斷顯示字符串

??? MOV ah,9

??? ; 將mess2的偏移地址賦給dx

??? MOV dx,offset mess2

??? ; 調用21h中斷顯示字符串

??? int 21h

AG:

??? ; 將outport1的地址賦給dx

??? mov dx,outport1

??? ; 將al的值輸出到dx指定的端口

??? out dx,al

??? ; 調用延時子程序

??? call delay??????? ;調延時子程序

??? ; 將outport2的地址賦給dx

??? mov dx,outport2

??? ; 將al的值輸出到dx指定的端口

??? out dx,al

??? ; 調用延時子程序

??? call delay??????? ;調延時子程序

??? ; 設置ah為1,準備調用16h中斷讀取鍵盤輸入

??? mov ah,1

??? ; 調用16h中斷讀取鍵盤輸入

??? int 16h

??? ; 如果沒有鍵盤輸入,跳轉到AG標簽處繼續循環

??? je AG

??? ; 設置ah為4ch,準備調用21h中斷結束程序

??? mov ah,4ch

??? ; 調用21h中斷結束程序

??? int 21h

; 延時子程序定義

delay proc near??????? ;延時子程序

??? ; 將5000賦給bx

??? mov bx,5000

lll:

??? ; 將0賦給cx

??? mov cx,0

ll:

??? ; 循環cx次

???? loop ll

??? ; bx減1

??? dec bx

??? ; 如果bx不等于0,跳轉到lll標簽處繼續循環

??? jne lll

??? ; 子程序返回

??? ret

delay endp

code ends

; 程序結束

end start

設計思路:

  1. 數據段定義(DATAS SEGMENT)

定義了三個字符串:mess1、mess2和mess3。這些字符串用于在屏幕上顯示信息。

  1. 代碼段定義(code segment)

程序的主體部分,包含了初始化數據段、顯示消息、循環輸出數據和延時的邏輯。

  1. 初始化數據段(MOV ax,DATAS / MOV ds,ax)

將數據段的地址加載到ax寄存器,然后將ax的值賦給ds寄存器,以便程序可以訪問數據段中的數據。

  1. 顯示消息(MOV ah,9 / MOV dx,offset mess1 / int 21h)

使用int 21h中斷的功能9來顯示字符串。首先設置ah為9,然后將字符串的偏移地址賦給dx,最后調用int 21h中斷。

  1. 循環輸出數據(AG:...)

程序的主要循環部分,通過兩個指定的端口(outport1和outport2)輸出數據,并在每次輸出后調用延時子程序。

  1. 延時子程序(delay proc near)

一個簡單的延時子程序,。

  1. 檢測鍵盤輸入(mov ah,1 / int 16h)

使用int 16h中斷的功能1來檢測鍵盤輸入。如果沒有鍵盤輸入,程序將繼續循環;如果有鍵盤輸入,程序將結束。

  1. 結束程序(mov ah,4ch / int 21h)

使用int 21h中斷的功能4ch來結束程序。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79253.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 使用Nginx搭建簡易網站模塊

網站需求: 一、基于域名[www.openlab.com](http://www.openlab.com)可以訪問網站內容為 welcome to openlab ? 二、給該公司創建三個子界面分別顯示學生信息,教學資料和繳費網站,基于[www.openlab.com/student](http://www.openlab.com/stud…

MyBatis 如何使用

1. 環境準備 添加依賴&#xff08;Maven&#xff09; 在 pom.xml 中添加 MyBatis 和數據庫驅動依賴&#xff1a; <dependencies><!-- MyBatis 核心庫 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId&g…

ArkTS組件的三個通用(通用事件、通用屬性、通用手勢)

文章目錄 通用事件點擊事件 onClick觸摸事件 onTouch掛載、卸載事件拖拽事件按鍵事件 onKeyEvent焦點事件鼠標事件懸浮事件組件區域變化事件 onAreaChange組件尺寸變化事件組件可見區域變化事件組件快捷鍵事件自定義事件分發自定義事件攔截 通用屬性尺寸設置位置設置布局約束邊…

智慧城市像一張無形大網,如何緊密連接你我他?

智慧城市作為復雜巨系統&#xff0c;其核心在于通過技術創新構建無縫連接的網絡&#xff0c;使物理空間與數字空間深度融合。這張"無形大網"由物聯網感知層、城市數據中臺、人工智能中樞、數字服務入口和安全信任機制五大支柱編織而成&#xff0c;正在重塑城市運行規…

【python】django sqlite版本過低怎么辦

方法一&#xff1a;下載最新版本 復制上面的內容的鏈接 在服務器上進行操作 wget https://sqlite.org/2025/sqlite-autoconf-3490100.tar.gz tar -zxvf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefix/usr/local make && make in…

PyTorch - Tensor 學習筆記

上層鏈接&#xff1a;PyTorch 學習筆記-CSDN博客 Tensor 初始化Tensor import torch import numpy as np# 1、直接從數據創建張量。數據類型是自動推斷的 data [[1, 2],[3, 4]] x_data torch.tensor(data)torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])輸出&am…

【技術派后端篇】ElasticSearch 實戰指南:環境搭建、API 操作與集成實踐

1 ES介紹及基本概念 ElasticSearch是一個基于Lucene 的分布式、高擴展、高實時的基于RESTful 風格API的搜索與數據分析引擎。 RESTful 風格API的特點&#xff1a; 接受HTTP協議的請求&#xff0c;返回HTTP響應&#xff1b;請求的參數是JSON&#xff0c;返回響應的內容也是JSON…

從標準九九表打印解讀單行表達式的書寫修煉(Python)

解讀單行表達式書寫&#xff0c;了解修習單行捷徑。 筆記模板由python腳本于2025-04-16 23:24:17創建&#xff0c;本篇筆記適合喜歡單行喜好python的coder翻閱。 【學習的細節是歡悅的歷程】 博客的核心價值&#xff1a;在于輸出思考與經驗&#xff0c;而不僅僅是知識的簡單復述…

深入解析布爾注入:原理、實戰與防御

目錄 一、布爾注入的原理與核心邏輯 二、布爾注入的實戰步驟 三、關鍵函數與繞過技巧 四、實戰案例&#xff1a;獲取數據庫名稱 五、防御策略與最佳實踐 六、總結 一、布爾注入的原理與核心邏輯 布爾注入&#xff08;Boolean-Based Blind SQL Injection&#xff09;是一種…

OpenGL學習筆記(幾何著色器、實例化、抗鋸齒)

目錄 幾何著色器爆破物體法向量可視化 實例化&#xff08;偏移量存在uniform中&#xff09;實例化數組&#xff08;偏移量存在頂點屬性中&#xff09;小行星帶 抗鋸齒SSAA&#xff08;Super Sample Anti-aliasing&#xff09;MSAA&#xff08;Multi-Sampling Anti-aliasing&…

idea報錯java: 非法字符: ‘\ufeff‘解決方案

解決方案步驟以及說明 BOM是什么&#xff1f;1. BOM的作用2. 為什么會出現 \ufeff 錯誤&#xff1f;3. 如何解決 \ufeff 問題&#xff1f; 最后重新編譯&#xff0c;即可運行&#xff01;&#xff01;&#xff01; BOM是什么&#xff1f; \ufeff 是 Unicode 中的 BOM&#xff0…

open webui 介紹 是一個可擴展、功能豐富且用戶友好的本地部署 AI 平臺,支持完全離線運行。

AI MCP 系列 AgentGPT-01-入門介紹 Browser-use 是連接你的AI代理與瀏覽器的最簡單方式 AI MCP(大模型上下文)-01-入門介紹 AI MCP(大模型上下文)-02-awesome-mcp-servers 精選的 MCP 服務器 AI MCP(大模型上下文)-03-open webui 介紹 是一個可擴展、功能豐富且用戶友好的…

Log4j2遠程命令執行(CVE-2021-44228)復現

這里選擇使用vulfocue的靶場來進行復現 描述: Apache Log4j2 是一個基于 Java 的日志記錄工具。該工具重寫了 Log4j 框架&#xff0c;并且引入了大量豐富的特性。該日志框架被大量用于業務系統開發&#xff0c;用來記錄日志信息。 在大多數情況下&#xff0c;開發者可能會將用…

模型提示詞

一 提示詞 &#xff08;一&#xff09; 提示詞&#xff08;Prompt&#xff09;是用戶發送給大語言模型的問題、指令或請求&#xff0c;** 1 來明確地告訴模型用戶想要解決的問題或完成的任務&#xff0c;是大語言模型理解用戶需求并據此生成相關、準確回答或內容的基礎。對于…

深度學習算法:從基礎到實踐

簡介 深度學習作為人工智能領域的一個重要分支&#xff0c;近年來在多個領域取得了顯著的成就。本文將從基礎概念出發&#xff0c;探討深度學習算法的核心原理&#xff0c;并介紹一些實際應用案例。 深度學習算法的核心概念 深度學習算法基于人工神經網絡&#xff0c;通過構…

5.9 《GPT-4調試+測試金字塔:構建高可靠系統的5大實戰策略》

5.4 測試與調試:構建企業級質量的保障體系 關鍵詞:測試金字塔模型、GPT-4調試助手、LangChain調試模式、異步任務驗證 測試策略設計(測試金字塔實踐) #mermaid-svg-RblGbJVMnCIShiCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…

Visio繪圖工具全面科普:解鎖專業圖表繪制新境界[特殊字符]

Visio繪圖工具全面科普&#xff1a;解鎖專業圖表繪制新境界&#x1f31f; 在信息爆炸的時代&#xff0c;清晰、直觀地呈現復雜信息變得至關重要。無論是繪制流程圖&#x1f4ca;、組織結構圖&#x1f465;&#xff0c;還是規劃網絡拓撲&#x1f5a7;&#xff0c;一款強大的繪圖…

ShellScript腳本編程

語法基礎 腳本結構 我們先從這個小demo程序來窺探一下我們shell腳本的程序結構 #!/bin/bash# 注釋信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我們可以通過文本編輯器(在這里我們使用linux自帶文本編輯神器vim)&#xff0c;新建一個文件…

你了解哪些Java限流算法?

大家好&#xff0c;我是鋒哥。今天分享關于【你了解哪些Java限流算法?】面試題。希望對大家有幫助&#xff1b; 你了解哪些Java限流算法? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 在 Java 中&#xff0c;限流算法廣泛用于控制流量、避免過載和保護系統的穩…

prime-2 靶場筆記(vuInhub靶場)

前言&#xff1a; 在本次靶場環境中涉及的知識點&#xff0c;主要包含LFI和SMB以及Lxd組提權&#xff0c;具體內容包括主機探測、端口掃描、目錄掃描、wpscan掃描、反彈shell、一句話木馬、容器、linux各種提權和維持。 環境介紹&#xff1a; 本靶場使用了kali&#xff08;192…