日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编 cmp_汇编复习

發布時間:2023/12/3 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编 cmp_汇编复习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一章

  • 計算機組成

五部分:(運算器、控制器)、存儲器、輸入/輸出設備

↑↑ CPU ↑↑ ↑內存↑

三條總線:控制總線、地址總線、數據總線

  • 不同進制及BCD碼的轉換
  • 特殊ascll

‘0’~‘9’—— 30H ~ 39H

‘A’~‘F’—— 41H ~ 46H

回車 —— 0DH

換行 —— 0AH

  • 溢出判斷
  • 運算器對有符號數和無符號數同等對待
  • 進位保存在CF9(進位標志位)中
  • 當參與運算的兩數符號相同,結果符號卻他們相異時,判斷溢出
  • 第二章

    • 16位寄存器

    AX、BX、CX、DX

    SI、DI

    BP、SP

    其中AX、BX、CX、DX可分為高位,低位兩個八位寄存器使用

    如:

    • 32位操作系統工作模式

    a. 實模式

    b. 保護模式

    c. 虛擬86模式

    • 實模式的特點

    a. 加電復位之后,486工作在實模式下,系統在Dos管理下

    b. 只能訪問 1M 內存

    c. 存儲管理部件對存儲器只分段,不分頁,每段最大64KB

    d. 段寄存器中存放段基址

    • 實模式下段寄存器存放相應邏輯段基址

    邏輯段 段基址 偏移地址

    代碼段 CS IP

    堆棧段 SS SP

    數據段 DS 根據不同的尋

    附加段 ES 址方式,選擇BX/SI/DI

    • 物理地址 = 段基址 * 2^4 + 偏移量
    • 虛擬地址、線性地址、物理地址

    虛擬地址 ——> 分段部件 = 線性地址

    線性地址 ——> 分頁部件 = 物理地址

    在實模式下,沒有分頁部件,即 線性地址 = 物理地址

    第三章

    • 指令

    指令 = 操作碼 + 操作數

    指令格式如下:

    標號:操作碼助記符 [TAB] 操作數(多個操作數用 , 隔開) ;注釋

    其中,標號表示該條指令的符號地址(邏輯地址),以下劃線或字母開始不超過31個字符

    • 標志寄存器

    C、A、S、P、Z、O

  • C(進位/借位標志)
  • 加減法執行后,最高位產生進位或借位,則C置1,否則置0

    2. A(輔助進位/借位)

    加法或減法執行后,D3向D4有進位或借位,則A置1,否則置0

    3. S(符號寄存器)

    S標志記錄結果的最高位的值

    4. P(奇偶標志)

    根據運算結果低8位中 1 的個數判定,個數為偶數則P置1,奇數則置0(P只關心低8位)

    5. Z(全〇標志)

    isZero( ) 若全為零則置1

    6. O(溢出標志位)

    若溢出則置1

    • 尋址方式
  • 立即尋址
  • 只能用于源操作數,不能用于目標操作數

    常用于賦值

    16進制表示時,開頭為 A~F時,需要在開頭加0

    2. 寄存器尋址

    立即數在寄存器中

    3. 直接尋址

    形式:

    a. 段寄存器:[偏移地址] 如:Mov AX, DS:[45H]

    b. 段寄存器:變量名 如:Mov AX, DS:Buf

    4. 間接尋址

    BP SS

    BX SI DI DS

    5. 基址尋址

    BP SS

    BX DS

    段寄存器:[基址寄存器 + 位移量]

    6. 變址尋址

    SI DI DS

    段寄存器:[比例因子 * 變址寄存器 + 位移量]

    7. 基+變

    段寄存器:[基址寄存器 + 比例因子 * 變址寄存器 + 位移量]

    • 符號指令和偽指令
    ;數據定義偽指令 用于定義變量 DB 定義字節變量 DW 定義字變量 DD 定義雙字變量;符號定義偽指令 用于定義常量和符號名 EQU 等值偽指令(定義出來視為常量) = 等號偽指令(等號偽指令定義出來的常量值可變,EQU定義出來的不可變);數值回送運算符 SEG 回送邏輯段的段基址或標號/變量所在邏輯段的段基址 OFFSET 回送標號/變量的偏移地址 TYPR 回送標號或變量的類型(字節返回1,字返回2,雙字返回3) $ 使用 $ 統計之前的所有字符長度, 常數不算(緊跟在DBDWDD之后可以統計字符串長度);屬性操作符 PTR 格式 類型說明符 PTR 標號或變量的地址表達形式 1. 寄存器前不能加 PTR, 內存數前才可以 2. 長度不確定時使用,MOV WORD PTR [BX], 1234 3. 有變量且長度不一致,MOV AX, WORD PTR BUF
    • 基本指令集
    1. MOV 格式:MOV 目標操作數, 源操作數立即數不能做目標操作數 不可同時操作內存數 不可同時操作段寄存器 不允許將立即數傳入段寄存器2. LEA 偏移地址傳送指令 格式:LEA 目標操作數, 源操作數MOV BX, OFFSET BUF LEA BX, BUF 上兩句等價目標操作數要為16/32位寄存器,不影響6個標志位3. XCHG 格式:XCHG 目標操作數, 源操作數 將目標操作數和源操作數數據交換不能同時為內存數,段寄存器,立即數4. 堆棧操作 進出堆棧 的數據長度必須為字或雙字 4.1 PUSH 格式:PUSH 操作數 將源操作數壓入棧中,16位時 (sp)-2 -> (sp) 4.2 POP 格式:POP 操作數 將棧頂元素彈出,(sp)+ 2 -> (sp) 4.3 PUSHA/POPA 全部壓入棧/彈出棧5.加減法 5.1 加法 5.1.1 ADD 格式:ADD 目標操作數, 源操作數 源操作數 + 目標操作數 -> 目標操作數 兩數等長,且不可同為內存數,段寄存器 5.1.2 ADC 格式:ADC 目標操作數, 源操作數 (CF)+ 目標操作數 + 源操作數 5.2 減法 5.2.1 SUB 格式:SUB 目標操作數, 源操作數 目標操作數 - 源操作數 -> 目標操作數 5.2.2 SBB 格式:SBB 目標操作數, 源操作數 目標操作數 - 源操作數 - (CF) -> 目標操作數 6 CMP 格式:CMP 目標操作數,源操作數 只改變6個標志位,不保存運算結果 目標操作數不可為立即數 7 自增自減 7.1 INC 格式:INC 目標操作數 目標操作數自增1 7.2 DEC 格式:DEC 目標操作數 目標操作數自減1 8 NEG 格式:NEG 目標操作數 將目標操作數求補后(即0-目標操作數)的結果(補碼的形式)送入目標操作數 9 邏輯運算 9.1 AND(與) 格式:AND 目標操作數,源操作數 將目標操作數與源操作數相與,送入目標操作數 常常用于指定位清零(置0) 9.2 OR(或) 格式:OR 目標操作數,源操作數 將源操作數與目標操作數相或,放入目標操作數 常用于指定位置1 9.3 NOT(非) 格式:NOT 目標操作數 將目標操作數按位取反,送回目標操作數中 9.4 XOR(異或) 格式:XOR 目標操作數,源操作數 將目標操作數和源操作數異或,送入,目標操作數中 常用于指定位取反 10 TEST(測試指令) 格式:TEST 目標操作數,源操作數 將兩數進行與運算,結果不保存,C、O置0,對A未定義,S、P、Z按結果設置 11 移位指令 11.1 開環移位指令 算術左移: SAL 操作數,移位次數算術右移: SAR 操作數,移位次數邏輯左移: SHL 操作數,移位次數邏輯右移: SHR 操作數,移位次數 11.2 閉環移位指令含進位的循環左移: RCL 操作數,移位次數含進位的循環右移: RCR 操作數,移位次數不含進位的循環左移:ROL 操作數,移位次數不含進位的循環右移:ROR 操作數,移位次數 12 循環轉移指令 12.1 JMP(無條件轉移) 格式:JMP 標號 12.2 LOOP 格式:LOOP 標號 例:MOV CX, 7 A: ...LOOP A 即循環7次 12.3 條件轉移指令 JZ/JE Z為1 JNZ/JNE Z為0 JS S為1 JNS S為0 JO O為1 JNO O為0 JP P為1 JNP P為0 JC C為1 JNC C為0 12.4 無符號數大小比較(CMP X, Y) JA X > Y JNA X <= Y JC X < Y JNC X >= Y 12.5 有符號數大小比較(CMP X, Y) JG X > Y JGE X >= Y JL X < Y JLE X <= Y 13 子程序 子程序格式: CALL [子程序名] ... ... [子程序名] PROC ... RET ENDP

    第四章

    • EXE源程序的編程結構

    DATA SEGMENT USE16

    ......

    (數據定義)

    DATA ENDS

    CODE SEGMENT USE16

    BEG: ...

    ... ...

    CODE ENDS

    END BEG

    • 開發過程

    a. 編輯程序,設該程序為 a.asm

    b. 匯編該程序 masm a.asm(書上為:ml/c a.asm)產生 a.obj文件

    c. 鏈接 link a.obj

    d. 執行 a.exe

    • 部分dos/bios功能
  • 01H
  • 例子: MOV AH, 1

    INT 21H

    等待從鍵盤輸入一個字符,同時將該字符顯示在顯示器上

    入口參數:無

    出口參數:AL = 按鍵 ASCLL值

    2. 02H

    例子:MOV DL, 'A'

    MOV AH, 2

    INT 21H

    在屏幕上顯示一個字符,光標右移一位

    入口參數:DL = 顯示字符的ASCLL

    出口參數:無

    注:會破壞AL寄存器

    3. 09H

    顯示字符串

    入口參數:DS:DX = 字符串首地屏幕上 ,字符串必須'$'結尾

    出口參數:無

    注:會破壞AL

    4. 0AH

    等待字符串輸入,保存入緩沖區,同時在屏幕上顯示

    入口參數:DS: DX = 輸入數據緩沖區首地址

    以回車為標志,緩沖區首單元放置預計可接受字符個數,buf+1格放置實際字符數(不包含回車),符串由buf+2 開始存儲。緩沖區不接受超長字符。

    5. 0EH

    bios:輸出字符。

    MOV AH 0EH

    MOV AL ‘A’

    INT 10H

    總結

    以上是生活随笔為你收集整理的汇编 cmp_汇编复习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。