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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编 cmp_汇编复习

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

第一章

  • 計算機(jī)組成

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

↑↑ CPU ↑↑ ↑內(nèi)存↑

三條總線:控制總線、地址總線、數(shù)據(jù)總線

  • 不同進(jìn)制及BCD碼的轉(zhuǎn)換
  • 特殊ascll

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

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

回車 —— 0DH

換行 —— 0AH

  • 溢出判斷
  • 運算器對有符號數(shù)和無符號數(shù)同等對待
  • 進(jìn)位保存在CF9(進(jìn)位標(biāo)志位)中
  • 當(dāng)參與運算的兩數(shù)符號相同,結(jié)果符號卻他們相異時,判斷溢出
  • 第二章

    • 16位寄存器

    AX、BX、CX、DX

    SI、DI

    BP、SP

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

    如:

    • 32位操作系統(tǒng)工作模式

    a. 實模式

    b. 保護(hù)模式

    c. 虛擬86模式

    • 實模式的特點

    a. 加電復(fù)位之后,486工作在實模式下,系統(tǒng)在Dos管理下

    b. 只能訪問 1M 內(nèi)存

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

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

    • 實模式下段寄存器存放相應(yīng)邏輯段基址

    邏輯段 段基址 偏移地址

    代碼段 CS IP

    堆棧段 SS SP

    數(shù)據(jù)段 DS 根據(jù)不同的尋

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

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

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

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

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

    第三章

    • 指令

    指令 = 操作碼 + 操作數(shù)

    指令格式如下:

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

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

    • 標(biāo)志寄存器

    C、A、S、P、Z、O

  • C(進(jìn)位/借位標(biāo)志)
  • 加減法執(zhí)行后,最高位產(chǎn)生進(jìn)位或借位,則C置1,否則置0

    2. A(輔助進(jìn)位/借位)

    加法或減法執(zhí)行后,D3向D4有進(jìn)位或借位,則A置1,否則置0

    3. S(符號寄存器)

    S標(biāo)志記錄結(jié)果的最高位的值

    4. P(奇偶標(biāo)志)

    根據(jù)運算結(jié)果低8位中 1 的個數(shù)判定,個數(shù)為偶數(shù)則P置1,奇數(shù)則置0(P只關(guān)心低8位)

    5. Z(全〇標(biāo)志)

    isZero( ) 若全為零則置1

    6. O(溢出標(biāo)志位)

    若溢出則置1

    • 尋址方式
  • 立即尋址
  • 只能用于源操作數(shù),不能用于目標(biāo)操作數(shù)

    常用于賦值

    16進(jìn)制表示時,開頭為 A~F時,需要在開頭加0

    2. 寄存器尋址

    立即數(shù)在寄存器中

    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. 基+變

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

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

    第四章

    • EXE源程序的編程結(jié)構(gòu)

    DATA SEGMENT USE16

    ......

    (數(shù)據(jù)定義)

    DATA ENDS

    CODE SEGMENT USE16

    BEG: ...

    ... ...

    CODE ENDS

    END BEG

    • 開發(fā)過程

    a. 編輯程序,設(shè)該程序為 a.asm

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

    c. 鏈接 link a.obj

    d. 執(zhí)行 a.exe

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

    INT 21H

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

    入口參數(shù):無

    出口參數(shù):AL = 按鍵 ASCLL值

    2. 02H

    例子:MOV DL, 'A'

    MOV AH, 2

    INT 21H

    在屏幕上顯示一個字符,光標(biāo)右移一位

    入口參數(shù):DL = 顯示字符的ASCLL

    出口參數(shù):無

    注:會破壞AL寄存器

    3. 09H

    顯示字符串

    入口參數(shù):DS:DX = 字符串首地屏幕上 ,字符串必須'$'結(jié)尾

    出口參數(shù):無

    注:會破壞AL

    4. 0AH

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

    入口參數(shù):DS: DX = 輸入數(shù)據(jù)緩沖區(qū)首地址

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

    5. 0EH

    bios:輸出字符。

    MOV AH 0EH

    MOV AL ‘A’

    INT 10H

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。