匯編語言期末快速過手筆記

一、計算機系統組成

  1. 計算機系統組成:由硬件系統和軟件系統組成

    • 硬件系統:CPU、存儲器、輸入/輸出設備等物理部件
    • 軟件系統:操作系統、各種語言、系統軟件和應用軟件
  2. 匯編語言分類

    • 屬于低級語言(直接面向硬件)
    • 與高級語言(面向問題)和機器語言(二進制代碼)相區別

二、匯編程序開發過程

  1. 源文件擴展名

    • .ASM:匯編語言源程序
    • .OBJ:匯編后產生的目標文件
    • .EXE:鏈接后生成的可執行文件
  2. 開發步驟

    • 編輯(.ASM)→ 匯編(.OBJ)→ 鏈接(.EXE)→ 執行
  3. 相關命令

    • MASM:匯編命令,生成.OBJ和可選.LST文件
    • LINK:鏈接命令,生成.EXE文件

三、8086/8088 CPU結構

  1. CPU組成

    • 運算器(ALU):算術邏輯運算
    • 控制器:指令譯碼和執行控制
    • 寄存器組:數據暫存和地址處理
  2. 寄存器分類

    • 通用寄存器(AX,BX,CX,DX,SI,DI,BP,SP)
    • 段寄存器(CS,DS,SS,ES)
    • 控制寄存器(IP,FLAGS)
  3. 寄存器位數

    • 8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL(共8個)
    • 16位寄存器:AX,BX,CX,DX,SI,DI,BP,SP,CS,DS,SS,ES,IP,FLAGS(共14個)

四、標志寄存器(PSW)

  1. 標志位組成

    • 條件狀態位(6個):CF,PF,AF,ZF,SF,OF
    • 控制狀態位(3個):DF,IF,TF
  2. 各標志位含義

    • CF(進位標志):無符號數溢出
    • PF(奇偶標志):結果低8位1的個數為偶數
    • AF(輔助進位):BCD運算時低4位向高4位進位
    • ZF(零標志):結果為0
    • SF(符號標志):結果為負(最高位為1)
    • OF(溢出標志):有符號數溢出
    • DF(方向標志):串操作方向(0=遞增,1=遞減)
    • IF(中斷允許):是否允許可屏蔽中斷
    • TF(陷阱標志):單步執行

五、存儲器組織

  1. 存儲單元編址

    • 按字節編址
    • 1字節=8位
    • 1字=2字節=16位
  2. 物理地址形成

    • 物理地址 = 段地址×16 + 偏移地址
    • 段地址左移4位(相當于×16)加偏移地址
  3. 邏輯地址與物理地址轉換

    • 例:236FH:1000H → 246F0H
    • 計算方法:236F0H + 1000H = 246F0H
  4. 段寄存器使用規則

    • 默認段選擇:
      • CS:代碼段
      • DS:數據段
      • SS:堆棧段(BP作基址時使用)
      • ES:附加段(串操作目的地址)

六、尋址方式

  1. 尋址方式分類

    • 立即尋址:操作數在指令中
    • 寄存器尋址:操作數在寄存器
    • 存儲器尋址:
      • 直接尋址:[偏移地址]
      • 寄存器間接:[BX/BP/SI/DI]
      • 寄存器相對:[BX/BP/SI/DI + 位移量]
      • 基址變址:[BX/BP + SI/DI]
      • 相對基址變址:[BX/BP + SI/DI + 位移量]
  2. 轉移地址尋址

    • 段內轉移:只修改IP
    • 段間轉移:修改CS和IP
    • 直接尋址:目標地址在指令中
    • 間接尋址:目標地址在寄存器或內存

七、指令系統

  1. 數據傳送指令

    • MOV:傳送(不能直接段寄存器間傳送)
    • XCHG:交換(不能與段寄存器交換)
    • PUSH/POP:堆棧操作(16位操作)
    • LEA:取有效地址
    • LDS/LES:裝入遠指針
  2. 算術運算指令

    • ADD/ADC:加法/帶進位加
    • SUB/SBB:減法/帶借位減
    • INC/DEC:加1/減1(不影響CF)
    • NEG:求補(相當于0-操作數)
    • MUL/IMUL:無/有符號乘法
    • DIV/IDIV:無/有符號除法
  3. 邏輯運算指令

    • AND/OR/XOR/NOT:與/或/異或/非
    • TEST:測試(相當于AND但不保存結果)
    • SHL/SHR:邏輯左/右移
    • SAL/SAR:算術左/右移
    • ROL/ROR:循環左/右移
    • RCL/RCR:帶進位循環左/右移
  4. 串操作指令

    • MOVS/CMPS/SCAS/LODS/STOS
    • 前綴:REP/REPE/REPNE
    • 方向控制:CLD(DF=0)/STD(DF=1)
  5. 控制轉移指令

    • JMP:無條件轉移
    • Jcc:條件轉移(JA,JB,JE,JG,JL等)
    • LOOP/LOOPE/LOOPNE:循環控制
    • CALL/RET:子程序調用/返回
    • INT/IRET:中斷調用/返回
  6. 處理器控制指令

    • CLC/STC:清/置CF
    • CLD/STD:清/置DF
    • CLI/STI:清/置IF
    • HLT/NOP:暫停/空操作

八、偽指令與程序結構

  1. 偽指令類型

    • 數據定義:DB/DW/DD(字節/字/雙字)
    • 符號定義:EQU/=(等值)/LABEL(類型重定義)
    • 段定義:SEGMENT/ENDS
    • 過程定義:PROC/ENDP
    • 程序結束:END
  2. 程序結構

    DATA SEGMENT; 數據定義
    DATA ENDSSTACK SEGMENT STACK; 堆棧定義
    STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
    START:; 程序代碼MOV AH,4CHINT 21H
    CODE ENDSEND START
    
  3. 變量與標號

    • 變量:存儲單元符號地址,有段、偏移和類型屬性
    • 標號:指令地址符號,有段、偏移和距離屬性(NEAR/FAR)

九、中斷與I/O

  1. 中斷類型

    • 內部中斷:除法錯、單步、斷點、溢出、指令中斷
    • 外部中斷:NMI(非屏蔽)、INTR(可屏蔽)
  2. 中斷向量表

    • 位于內存0000:0000~0000:03FFH
    • 每個中斷占4字節(CS:IP)
  3. DOS功能調用

    • 使用INT 21H
    • 常用功能:
      • 01H:鍵盤輸入
      • 02H:顯示輸出
      • 09H:顯示字符串
      • 4CH:程序結束
  4. I/O指令

    • IN:從端口輸入
    • OUT:向端口輸出
    • 端口地址:0~FFFFH

十、典型程序結構

  1. 順序結構

    • 指令順序執行
  2. 分支結構

    CMP AL,BL
    JA LABEL1  ; AL>BL時轉移
    JB LABEL2  ; AL<BL時轉移
    JE LABEL3  ; AL=BL時轉移
    
  3. 循環結構

    MOV CX,10
    LOOP1:; 循環體LOOP LOOP1  ; CX=CX-1, CX≠0時循環
    
  4. 子程序結構

    ; 調用
    CALL SUB1; 定義
    SUB1 PROC NEAR/FAR; 子程序體RET
    SUB1 ENDP
    

十一、數值處理

  1. 數制轉換

    • BCD碼調整指令:
      • AAA/AAS:非壓縮BCD加減調整
      • AAM/AAD:非壓縮BCD乘除調整
      • DAA/DAS:壓縮BCD加減調整
  2. 符號擴展

    • CBW:AL符號擴展到AX
    • CWD:AX符號擴展到DX:AX
  3. 算術運算注意事項

    • 乘法:8位×8位→16位,16位×16位→32位
    • 除法:被除數位數是除數兩倍

十二、調試與排錯

  1. DEBUG命令

    • R:查看/修改寄存器
    • D:顯示內存內容
    • E:修改內存內容
    • U:反匯編
    • T/P:單步執行
    • G:連續執行
    • Q:退出
  2. 常見錯誤

    • 操作數類型不匹配
    • 非法尋址方式
    • 段寄存器使用不當
    • 跳轉超出范圍
    • 堆棧不平衡

創作不易,如果您都看到這里了,可以給我一個點贊、收藏并關注一下么?您的支持與喜愛是激勵我創作的最大動力!

如果內容有誤請及時聯系我進行修改

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

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

相關文章

C++相比于C語言增加了哪些概念?

C相比于C語言增加了哪些概念&#xff1f; 作者將狼才鯨創建日期2025-06-17 CSDN閱讀地址&#xff1a;C相比于C語言增加了哪些概念&#xff1f;Gitee源碼目錄&#xff1a;qemu/demo_代碼示例/02_C_Class 目標受眾&#xff1a;熟悉C語言&#xff0c;對C完全不了解&#xff0c;但…

HarmonyOS5 分布式測試:斷網情況支付場景異常恢復驗證

以下是針對HarmonyOS 5分布式事務在斷網支付場景下的異常恢復驗證全流程方案&#xff0c;綜合關鍵技術與測試策略&#xff1a; 一、核心事務機制驗證 ?兩階段提交&#xff08;2PC&#xff09;協議? 模擬支付流程中網絡中斷&#xff0c;驗證事務協調者能否正確處理預提交與回滾…

【狂飆AGI】第5課:前沿技術-文生圖(系列1)

目錄 &#xff08;一&#xff09;繪畫本質&#xff08;二&#xff09;國內外AI轉繪展&#xff08;三&#xff09;創作思路&#xff08;四&#xff09;美學理論&#xff08;1&#xff09;不可能美學&#xff08;2&#xff09;趨無限美學&#xff08;3&#xff09;反物理美學&…

發那科A06B-6290-H124 伺服驅動器

?FANUC A06B-6290-H124 伺服驅動器核心性能解析? ?一、核心控制能力? ?多模式精密控制? 位置控制?&#xff1a;支持高精度旋轉角度/直線位移調節&#xff08;分辨率達脈沖級&#xff09;&#xff0c;適用于數控機床定位&#xff08;誤差0.01mm級&#xff09;和機器人軌…

Spring Boot 項目啟動優化

Spring Boot 項目啟動優化是一個非常重要的話題&#xff0c;尤其是在微服務和云原生環境下&#xff0c;快速啟動意味著更快的部署、更高效的彈性伸縮和更好的開發體驗。 下面我將從分析診斷、優化策略和終極方案三個層面&#xff0c;為你提供一個全面、可操作的優化指南。 一、…

「爬取豆瓣Top250電影的中文名稱」數據采集、網絡爬蟲

- 第 108 篇 - Date: 2025 - 06 - 16 Author: 鄭龍浩&#xff08;仟墨&#xff09; 文章目錄 **任務&#xff1a;爬取豆瓣Tap250電影的中文名稱****代碼****實現效果** 任務&#xff1a;爬取豆瓣Tap250電影的中文名稱 代碼 # 豆瓣前Tap 250 import requests from bs4 import…

MySQL 多表查詢、事務

1.多表查詢的分類 1.1 內連接 在 MySQL 中&#xff0c;內連接&#xff08;INNER JOIN&#xff09;返回的是兩個表中滿足連接條件的記錄的交集。這個“交集”不是指整個表&#xff0c;而是指符合連接條件的行組合&#xff0c;也就是A表和B表中滿足我們使用on指定條件的記錄。圖…

CSP-J 2020 入門級 第一輪(初賽) 答案及解析

CSP-J 2020 入門級 第一輪&#xff08;初賽&#xff09; 答案及解析 在內存儲器中每個存儲單元都被賦予一個唯一的序號&#xff0c;稱為&#xff08;&#xff09;。 A. 地址 B. 序號 C. 下標 D. 編號 答: A 計算機中每個存儲單元都是1字節&#xff0c;都有唯一的地址。 編譯器…

Flutter包管理與插件開發完全指南

Flutter作為Google推出的跨平臺移動應用開發框架&#xff0c;其強大的生態系統離不開完善的包管理機制和豐富的插件支持。本文將全面介紹Flutter中的包管理體系和插件開發實踐&#xff0c;幫助開發者高效管理項目依賴并擴展應用功能。 一、Flutter包管理基礎 1.1 包管理概述 …

【視頻直播出海】阿里云ApsaraVideo Live:從零搭建全球直播平臺的“星際航行”指南!

【視頻直播出海】阿里云ApsaraVideo Live&#xff1a;從零搭建全球直播平臺的“星際航行”指南&#xff01; 在全球化浪潮的推動下&#xff0c;視頻直播行業正以前所未有的速度跨越國界&#xff0c;成為連接世界的“數字新橋梁”。對于渴望拓展海外市場的企業而言&#xff0c;…

OAuth2中的Token

兩個不同的Token OAuth2 中主要有兩個不同的Token, 其中的區別為是否與用戶相關聯, 即與用戶相關的用戶Token, 和與客戶端相關的客戶端Token, 可以通過用戶Token, 查詢到用戶的相關信息, 客戶端Token與用戶無關, 一般只用于客戶端認證 用戶Token 獲取用戶Token一般有兩個方式…

使用 FastMCP 實現 Word 文檔與 JSON 數據互轉的 Python 服務

一、項目背景 本文分享一個基于 FastMCP 框架實現的文檔處理服務&#xff0c;可實現 Word 文檔&#xff08;.docx&#xff09;與 JSON 數據格式的雙向轉換。通過此服務&#xff0c;開發者可以輕松實現文檔內容提取、結構化數據填充、樣式模板復用等功能&#xff0c;適用于自動…

Vue3輪播圖組件,當前輪播區域有當前圖和左右兩邊圖,兩邊圖各顯示一半,支持點擊跳轉和手動滑動切換

功能&#xff1a; 自動循環播放&#xff08;到達末尾后回到第一張&#xff09;、可設置切換間隔時間&#xff08;interval屬性&#xff09; 左右導航按鈕&#xff08;可自定義顯示/隱藏&#xff09; 點擊底部指示器跳轉到指定幻燈片、且位置可調&#xff08;輪播圖內部/外部&…

350+交付案例,高質量低成本構建智慧園區數字孿生交付新范式

在智慧園區建設領域&#xff0c;數字孿生技術正成為推動園區智能化轉型的核心引擎。山東融谷信息憑借其全要素、全周期、全方位的數字孿生交付能力&#xff0c;已成功交付350余個項目&#xff0c;覆蓋產業園區、智慧樓宇、智慧社區等多元場景&#xff0c;低成本高質量交付&…

OpenCV 圖像像素類型轉換與歸一化

一、知識點 1、OpenCV支持多種數據類型&#xff0c;每種類型都對應著不同的取值范圍。 (1)、CV_8U取值范圍[0, 255]。 (2)、CV_16U取值范圍[0, 65535]。 (3)、CV_32F取值范圍[0, 1]。 2、OpenCV提供convertTo()函數來轉換數據類型&#xff0c;提供normalize()函數來改…

機器學習算法_支持向量機

一、支持向量機 支持向量機只能做二分類任務 SVM全稱支持向量機&#xff0c;即尋找到一個超平面使樣本分成兩類&#xff0c;且間隔最大 硬間隔&#xff1a;如果樣本線性可分&#xff0c;在所有樣本分類都正確的情況下&#xff0c;尋找最大間隔&#xff1b;如果出現異常值或樣…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令詳解&#xff1a;echo、tail 與重定向符號全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新時間&#xff1a;2025年6月17日 &#x1f3f7;? 標簽&#xff1a;Linux基礎 | Shell命令 | echo | tail | 輸出重定向 | Linux入門 文章目錄…

uniapp的更新流程【安卓、IOS、熱更新】

UniApp應用更新方案 兩種更新方式 APP全量升級&#xff1a;需要重新下載安裝包熱更新&#xff1a;通過下載wgt資源包實現&#xff0c;用戶只需重啟應用 Android更新實現 用戶需要授權安裝權限&#xff0c;流程為下載APK后自動彈出安裝界面 var dtask plus.downloader.cre…

火山引擎解碼生態型增長鐵律

“技術流量與力量的崛起&#xff0c;本質上是一場生態規模的競賽。每次浪潮的排頭兵&#xff0c;都是指尖沾著代碼的開發者——互聯網時代的Linux社區讓開源席卷全球&#xff0c;移動互聯網的App Store催生百萬開發者&#xff0c;而今天&#xff0c;大模型正在用API重構產業。”…

警惕GO的重復初始化

go的初始化方式有很多種&#xff0c;在某些情況下容易引起重復初始化導致錯誤。 事例如下&#xff1a; 當使用gorm連接數據庫時定義了全局DB var DB *gorm.DB 但是在后面某個函數內部初始化時導致DB重新初始化變成了局部變量&#xff0c;導致原來的全局變量DB還是nil func I…