自制操作系統前置知識匯編學習

今天要做什么?

為了更好的理解書中內容,需要學習下進制分析和匯編。

匯編語言其實應該叫叫機器指令符號化語言,目前的匯編語言是學習操作系統的基礎。

一:觸發器

電路觸發器的鎖存命令默認是斷開的,是控制電路觸發器是否鎖存。

觸發器有輸入端和輸出端,輸入端就類似電路的開關,輸出端就類似用小燈泡來控制顯示。

二:

  1. 寄存器(鎖存器)

寄存器是一個多輸入,多輸出的器件

當按下鎖存的命令,所有的寄存器都在同一時刻命令。

問題:若某個寄存器是由八個觸發器組成,它最大可以保存的數是多少?

1111 1111 =255

三:

帶寄存器的加法機

5+7+25

這個預置開關是將左側的輸入鎖存到寄存器R,一個個進入

先撥動開關 ,預置進去5,在撥動開關,然后撥動相加,在加法電路中進行相加操作,,然后寄存器R中的數字是12,再按照相同 步驟進入25

四:四則運算電路

根據預置加減乘除操作,寄存器中存放的內容,根據左側電路生成的二進制數字和右側寄存器中的存放內容,做出相應的變化(加減乘除)

(12+3)/(12+3) 如果做稍微復雜點的運算,但是寄存器只能保存一個值,就需要另外的去記

指令的概念,引入指令

增加一個寄存器,目前有兩個寄存器,寄存器R和寄存器Z,左側的電路輸入,可以選擇進入哪個寄存器, 兩個寄存器中的值 也可以相互傳送,如果這些命令都由開關控制,那開關就太多了,需要換一種思路。

指令:

根據接受的指令去執行相應的操作,可以囊括上面所有的開關。

六:

指令太多,最好有個容器保存起來,方便用,可以用內存

內存簡單介紹

1:每個內存單元都有其編號,每個內存單元由八個二進制位組成

2:每個內存單元都有相應的編號,地址線輸入相應的編號即可讀取到相應的內存,地址線的數量決定了可以讀到的最多的內存單元。

如果有八個二進制地址線,從0000 0000 到1111 1111,最多256個內存單元,2的n次方個內存單元。

3:內存單元的編號,就是他的內存地址

4習慣上,字節是用來描述二進制序列的長度單位。8個比特組成一個字節。字節的英語單純是Byte,簡稱位B。1001 1101的長度是一個字節。

5:在主流的計算機上,內存單元的長度是8個比特,換句話說,每個內存單元的長度都是一個自己

6:內存的容量可以用內存單元的數量來統計。因為每個內存單元的長度是1個字節,所以經常用字節數來衡量。

根據內存的大小,內存的容量是以字節(B)、千字節(KB)、兆字節(MB)、吉字節(GB)和太字節(TB)來標稱

1kb = 1024b

1MB =1024KB

1GB = 1024MB

1TB = 1024GB

7:練習,某內存有16條地址線,則他的容量有多大?每個內存單元的長度是多少?一個字節(8個比特)

0000 - FFFF ?65536個字節 64KB

七:

內存數據線(入或者出)

內存要入或者出數據,需要通過數據線,是雙向的

內存的操作入和出需要一個控制器,也就是讀/寫控制

如何寫入:

1:先在地址線給一個地址

2:在數據線上給出一個要寫入的數據

3:讀寫控制線發出寫命令,就可以把數據寫入給定的地址

如何讀出:

1:現在先在地址線上給出一個地址,指出要讀哪個單元

2:由讀寫控制線發出讀命令,數據就會從指定的數據線上讀出,并發送到數據線上

八:自動計算學習

運算器是在剛才四則運算的基礎上增加了一i個指令指針寄存器

1:第一條指令是將207傳送到寄存器R

2:將寄存器R中的內容和9相加,結果在寄存器R

3:將56傳送到寄存器Z

4:將寄存器Z中的內容和48相減,結果在寄存器Z

5:將寄存器Z中的內容和48相減,結果在寄存器Z

6:將寄存器R和寄存器Z的內容相出,結果在寄存器R

7:將寄存器R的內容傳送到地址位12的內存單元

8:可以進行停機

九:

處理器組成

總線接口部件、控制部件、指令執行部件

8086 是跨時代的16位處理器,因特爾一直保持兼容

每種處理器。例如64位處理器對應64位的寄存器和64位的算數邏輯部件。

指令集:任何一款處理器,所有包含的指令的集合稱為指令集

算術運算指令和邏輯運算指令:邏輯運算

數據傳送指令:內部寄存器之間,處理器和內存之間,處理器和外圍設備之間

處理器狀態控制指令:處理器的工作模式和工作狀態

十:

Mov 指令 傳送 賦值

add 加法指令 將,r和9中的數據相加在保存到r中

sub 減法指令,把寄存器z中的內容和48相減,在賦值給z。

div 除法指令,將寄存器r中的內容和z相除得到的商,再傳給r

mov [12] ,r ,中括號中的地址是內存中的地址,把寄存器r中的內容,傳送到寄存器[12]里面去。

Hlt 停機指令

十一:認識intel 8086處理器(低端字節序)內部的通用寄存器

AX/BX/CX/DX/SI/DI/BP/SP ?16位寄存器 16個比特組成,從右往左寄存器編號是0-15

十進制 23235

16進制5AC3

換算方式

INTEL 8086通用寄存器劃分

AX、BX、CX、DX 可以拆分成兩個八進制的寄存器,分別是:

AX:AH AL

BX:BH BL

CX:CH CL

DX:DH DL

寄存器使用編號:

AX是16位的寄存器,一個字節八個比特,兩個單詞 一個字就是AX。

寄存器AH是寄存器AX的高字節部分,寄存器AL是寄存器AX的低字節部分

改變了寄存器AH的值,就改變了寄存器AX的值

DX(083C)(DH(08)、DL(3C))

十二:

8086的內存訪問和字節序

十六進制的寄存器寫入八位的內存,需要拆分成兩個字節,假設寫入0002編號的內存,那么0002編號的內存保存的就是16位寄存器的低字節部分,0003保存的是16位寄存器的高字節部分。(像這種寄存器低字節部分寫入內存編號低地址單元,寄存器高字節部分寫入內存編號高字節單元的稱為低端字節序)。

看的李忠老師網易云的匯編課程,筆記就先整理到這里,后續統一提交git倉庫

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

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

相關文章

uCOSIII-移植

一、uCOS移植 1.移植 C/OS-III前,需要獲取C/OS-III 的源代碼,C/CPU 和 C/LIB 這兩個組件的源代碼。 2.將獲取的uCOSIII源代碼添加到工程文件中: ①.uC-CPU/ARM-Cortex-M/ARMv7-M/ARM/cpu_a.asm、uC-CPU\ARM-Cortex-M\ARMv7-M\cpu_c.c 和 uC-…

Windows使用docker部署fastgpt出現的一些問題

文章目錄 Windows使用docker部署FastGPT出現的一些問題1.docker部署pg一直重啟的問題2.重啟MongoDB之后一直出現“Waiting for MongoDB to start...”3.oneapi啟動不了failed to get gpt-3.5-turbo token encoder Windows使用docker部署FastGPT出現的一些問題 1.docker部署pg一…

【Python爬蟲(52)】探秘Scrapy:項目結構與配置全解析

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取&#xff…

【Android】ViewPager的使用

AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBac…

京東廣告基于 Apache Doris 的冷熱數據分層實踐

一、背景介紹 京東廣告圍繞Apache Doris建設廣告數據存儲服務&#xff0c;為廣告主提供實時廣告效果報表和多維數據分析服務。歷經多年發展&#xff0c;積累了海量的廣告數據&#xff0c;目前系統總數據容量接近1PB&#xff0c;數據行數達到18萬億行&#xff0c;日查詢請求量8…

Windows PyCharm的python項目移動存儲位置后需要做的變更

項目使用的venv虛擬環境&#xff0c;因此項目移動存儲位置后需要重新配置python解釋器的位置&#xff0c;否則無法識別&#xff0c;若非虛擬環境中運行&#xff0c;則直接移動后打開即可&#xff0c;無需任何配置。 PyCharm版本為2021.3.3 (Professional Edition)&#xff0c;其…

前后端對接

前端與后端的對接主要通過 接口 進行數據交互&#xff0c;具體流程和方式如下&#xff1a; 1. 明確需求與接口定義 前后端協商&#xff1a;確定需要哪些接口、接口的功能、請求參數和返回格式。接口文檔&#xff1a;使用工具&#xff08;如 Swagger、Postman、Apifox&#xff…

簡識MQ之Kafka、ActiveMQ、RabbitMQ、RocketMQ傳遞機制

四種主流消息隊列&#xff08;Kafka、ActiveMQ、RabbitMQ、RocketMQ&#xff09;的生產者與消費者傳遞信息的機制說明&#xff0c;以及實際使用中的注意事項和示例&#xff1a; 1. Apache Kafka 傳遞機制 模型&#xff1a;基于 發布-訂閱模型&#xff0c;生產者向 主題&#…

Websocket——心跳檢測

1. 前言&#xff1a;為什么需要心跳機制&#xff1f; 在現代的實時網絡應用中&#xff0c;保持客戶端和服務端的連接穩定性是非常重要的。尤其是在長時間的網絡連接中&#xff0c;存在一些異常情況&#xff0c;導致服務端無法及時感知到客戶端的斷開&#xff0c;可能造成不必要…

tailwindcss 前端 css 框架 無需寫css 快速構建頁面

版本&#xff1a;VUE3 TS 框架 vite 文章中使用tailwindcss 版本&#xff1a; ^3.4.17 簡介&#xff1a; Tailwind CSS 一個CSS 框架&#xff0c;提供組件化的樣式&#xff0c;直接在HTML 中編寫樣式&#xff0c;無需額外自定義CSS &#xff0c;快速&#xff01; 簡潔&#…

MFC開發:如何創建第一個MFC應用程序

文章目錄 一、概述二、MFC 的主要組件三、創建一個MFC窗口四、控件綁定消息函數 一、概述 MFC 是微軟提供的一個 C 類庫&#xff0c;用于簡化 Windows 應用程序的開發。它封裝了 Windows API&#xff0c;提供面向對象的接口&#xff0c;幫助開發者更高效地創建圖形用戶界面&am…

【Git版本控制器】第四彈——分支管理,合并沖突,--no-ff,git stash

&#x1f381;個人主頁&#xff1a;我們的五年 &#x1f50d;系列專欄&#xff1a;Linux網絡編程 &#x1f337;追光的人&#xff0c;終會萬丈光芒 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 ? 相關筆記&#xff1a; https://blog.csdn.net/djd…

AI助力小微企業技術開發規范化管理 | 雜談

AI助力小微企業技術開發規范化管理 在小型技術研發企業中&#xff0c;人員配置緊張&#xff0c;往往一名員工需要承擔多項職務和任務。例如&#xff0c;后端程序開發人員可能同時要負責需求調研、數據庫設計、后端設計及開發&#xff0c;甚至在某些情況下還需兼任架構師的角色。…

SpringBoot+Vue+微信小程序的貓咖小程序平臺(程序+論文+講解+安裝+調試+售后)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統介紹 在當下這個高速發展的時代&#xff0c;網絡科技正以令人驚嘆的速度不斷迭代更新。從 5G …

DeepSeek提效實操革命,全場景應用指南 AI提示詞萬能公式四步法以及對話技巧

歡迎來到濤濤聊AI DeepSeek系列文章 三塊顯示器如何擺放效率最高&#xff0c;讓deepseek給深度思考下 阿里云免費試用 DeepSeek大模型。 限時送 100 萬 tokens&#xff0c;快來搶先免費體驗&#xff01;AI 助手不再出現系統繁忙阿里云免費試用 DeepSeek大模型。 限時送 100 萬 …

智慧教室與無紙化同屏技術方案探討與實現探究

引言 隨著教育信息化的不斷發展&#xff0c;智慧教室和無紙化同屏技術逐漸成為提升教學效率和質量的重要手段。大牛直播SDK憑借其強大的音視頻處理能力和豐富的功能特性&#xff0c;在智慧教室和無紙化同屏領域積累了眾多成功案例。本文將深入探討基于大牛直播SDK的智慧教室、…

Linux MySQL 8.0.29 忽略表名大小寫配置

Linux MySQL 8.0.29 忽略表名大小寫配置 問題背景解決方案遇到的問題&#xff1a; 問題背景 突然發現有個大寫的表報不存在。 在Windows上&#xff0c;MySQL是默認支持忽略大小寫的。 這個時候你要查詢一下是不是沒有配置&#xff1a; SHOW VARIABLES LIKE lower_case_table…

【藍橋杯單片機】第十三屆省賽第二場

一、真題 二、模塊構建 1.編寫初始化函數(init.c) void Cls_Peripheral(void); 關閉led led對應的鎖存器由Y4C控制關閉蜂鳴器和繼電器 2.編寫LED函數&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 將ucLed取反的值賦給P0 開啟鎖存器 關閉鎖存…

【CMake 教程】常用函數與構建案例解析(三)

一、CMake 常用函數簡析 1. 條件判斷 if() / elseif() / else() 在 CMake 腳本中&#xff0c;條件判斷是控制邏輯的重要工具。if() 支持多種比較語句&#xff0c;包括數值、字符串、布爾值和變量存在性等。在條件滿足時執行特定邏輯代碼&#xff0c;下面是典型語法&#xff1…

ASP.NET Core 8.0學習筆記(二十七)——數據遷移:Migrations深入與其他遷移命令

一、數據庫架構的管理 1.EF Core提供兩種方式來保持EF Core的模型與數據庫保持同步。 (1)以數據庫為準&#xff1a;反向工程&#xff08;Db First&#xff09;&#xff0c;適用于中大型工程 (2)以代碼為準&#xff1a;數據遷移&#xff08;Code First&#xff09;&#xff0c;…