指令系統(tǒng)1(尋址方式)(樓俊君.ppt
《指令系統(tǒng)1(尋址方式)(樓俊君.ppt》由會員分享,可在線閱讀,更多相關《指令系統(tǒng)1(尋址方式)(樓俊君.ppt(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1 第4章指令系統(tǒng) 2 主要內(nèi)容 指令系統(tǒng)的一般概念對操作數(shù)的尋址方式六大類指令的操作原理操作碼的含義指令對操作數(shù)的要求指令執(zhí)行的結(jié)果 3 4 1概述 指令 控制計算機完成指定操作的命令機器指令 指令的二進制代碼形式 例如 CD21H匯編指令 助記符形式的指令 例如 INT21H指令系統(tǒng) CPU所有指令及其使用規(guī)則的集合 8088 8086指令系統(tǒng) 1 指令向后兼容 x86系列 2 應用廣泛 資料易于尋找 4 指令按功能分為六大類 92種 1 數(shù)據(jù)傳送類 2 算術運算類 3 邏輯運算和移位 4 串操作 5 控制轉(zhuǎn)移類 6 處理器控制 5 4 2指令的尋址方式 操作碼 操作數(shù) 操作數(shù) 說明要執(zhí)行的是什么操作 操作對象 可以有0個 1個或2個 目的 源 指令的基本構(gòu)成如下 6 指令舉例 ADDAX SI 6 MOVAX BX 操作碼操作數(shù) INC BX HLT 7 部分8088 8086常用指令 8 8088 8086的操作數(shù)分為3類 1 立即數(shù) 常數(shù) 源操作數(shù)就是參加操作的數(shù)據(jù)本身 它們可以是8位或16位 取值范圍如下表 立即數(shù)只能用作源操作數(shù) 如 MOVAX 0FA00H 正確MOV8000H DX 錯誤 操作數(shù) 數(shù)據(jù) 立即數(shù) 地址 寄存器 名稱 存儲器單元 地址 9 2 寄存器操作數(shù) 放在8個通用寄存器或4個段寄存器中的操作數(shù) 表示參加運算的數(shù)存放在指令給出的寄存器中 可以是16位或8位 10 只能存放字操作數(shù) 段寄存器存放當前操作數(shù)的段基地址 可作為源或目的操作數(shù) 但CS不作為目的操作數(shù) 不允許將立即數(shù)傳送到段寄存器 可通過某個通用寄存器傳遞改變 SI DI BP SP CS DS ES SS 11 3 存儲器操作數(shù) 存儲器操作數(shù) 字節(jié)字雙字 124 類型 存儲單元個數(shù) 一般不允許兩個操作數(shù)同時為存儲器操作數(shù) Flags標志寄存器 僅有個別指令可用它作為操作數(shù)IP不能用指令指針寄存器 它作為操作數(shù) 順序執(zhí)行時它自動加1 跳轉(zhuǎn)執(zhí)行時自動會跳轉(zhuǎn) 表示當前參加運算的數(shù)存放在存儲器的某1 2 4個單元中 12 存儲單元的物理地址 段基地址 16 偏移地址 若指令中沒有指明所涉及的段寄存器 CPU就采用默認的段寄存器來確定操作數(shù)所在的段 下表是段寄存器使用的一些基本約定 8086規(guī)定了訪問存儲器段的規(guī)則 此規(guī)則定義了段地址寄存器和偏移地址寄存器的組合方式 其默認規(guī)則如下表 13 存儲器操作數(shù)的偏移地址 也稱有效地址EA 要用 EA 方括號括起來 它可以通過不同的尋址方式由指令給出 存儲器操作數(shù)的段基地址 也稱段頭地址 一般省去 按隱含規(guī)則確定它們 也可直接給出進行段超越 例如若 BX 2000H SI 0A00H DI 2A00H 則以下指令的結(jié)果是一樣的 MOVAL 2A00H 隱含段頭為DS 直接尋址MOVAL BX 0A00H 隱含段頭為DS 寄存器相對尋址MOVAL BX SI 隱含段頭為DS 基址 變址尋址MOVAL DI 隱含段頭為DS 寄存器間接尋址但MOVAL ES 2A00H 段超越 段頭為ES 與前4條不同 存儲單元的物理地址 段基地址 16 偏移地址 注意 存儲器數(shù)據(jù)表示形式 地址值或寄存器 14 尋址方式 尋找操作數(shù)的方法尋找操作數(shù)的地址 一般指源操作數(shù) 尋找要執(zhí)行的下一條指令的地址在8086指令系統(tǒng)中 操作數(shù)所在地址的尋址方式可分為8種 立即尋址 寄存器相對尋址 直接尋址 基址 變址尋址 寄存器尋址 相對的基址 變址尋址 寄存器間接尋址 隱含尋址 4 28086的尋址方式 15 操作數(shù) 為一常數(shù) 直接由指令給出 此操作數(shù)稱為立即數(shù) 立即尋址只能用于源操作數(shù)例 MOVAX 1C8FHMOVBYTEPTR 2A00H 8FH錯誤例 MOV2A00H AX 錯誤 1立即尋址 16 立即數(shù) 操作碼 低8位 高8位 存儲器 MOV操作碼 02H 31H AH AL 代碼段 代碼段 立即尋址指令在存儲器中的存放形式 AX 指令操作例 MOVAX 3102H AX3102H執(zhí)行后 AH 31H AL 02H 用途 直接給出操作數(shù)據(jù) 立即數(shù)存放在內(nèi)存的代碼段中 17 2寄存器尋址 操作數(shù)放在某個寄存器中源操作數(shù)與目的操作數(shù)字長要相同寄存器尋址與段地址無關例 MOVAX BXMOV 3F00H AXMOVCL AL錯誤例 MOVAX BL 字長不同 MOVES AX DX 寄存器與段無關 18 AX SI 2233H 2233H 指令操作例 MOVSI AX SI AX 指令執(zhí)行前 AX 2233H指令執(zhí)行后 AX 2233H SI 2233H 用途 操作數(shù)存放在寄存器中 根據(jù)寄存器名稱尋找寄存器里面的數(shù)據(jù) 19 3直接尋址 指令中直接給出存儲器操作數(shù)的16位偏移地址或I O接口僅8位端口地址存儲器偏移地址也稱為有效地址 EA EffectiveAddress 存儲器默認的段寄存器為DS 但也可以顯式地指定其他段寄存器 稱為段超越前綴存儲器偏移地址也可用符號地址來表示 如ADDR VAR例 MOVAX 2A00H 段頭隱含為DSMOVDX ES 2A00H 段超越MOVSI TABLE PTR 段頭隱含為DS還有 INAL 90H 括號要省去OUT 85H AL 括號要省去 20 例 MOVAX 3102H AL 3102H AH 3103H 如果 DS 2000H 23102H CDH 23103H ABH則操作數(shù)的物理地址為 20000H 3102H 23102H指令執(zhí)行后 AX ABCDH MOV操作碼 02H 31H AH AL 23102H CDH ABH 存儲器 代碼段 數(shù)據(jù)段 23103H 用途 用于操作數(shù)存放在存儲器單元中或I O接口地址僅為8位的的端口中 21 4寄存器間接尋址 操作數(shù)的偏移地址 有效地址EA 放在寄存器中只有SI DI BX和BP可作間址寄存器例 MOVAX BX MOVCL CS DI INAL DX 括號省去OUT DX AL 括號省去錯誤例 MOVAX DX MOVCL AX EA BX BP SI DI 22 指令操作例 MOVAX SI 若 DS 6000H SI 1200H 61200H 44H 61201H 33H則指令執(zhí)行后 AX 3344H 用途 操作數(shù)存放在存儲器或I O接口地址為16位的的尋址 23 5寄存器相對尋址 EA 間址寄存器的內(nèi)容 8 16位的位移量 寄存器相對尋址常用于存取表格或一維數(shù)組中的元素 把表格的起始地址作為位移量 元素的下標值放在間址寄存器中 或反之 EA BX BP SI DI 8位16位 位移量 24 例 MOVAX BX 8 MOVCX TABLE SI MOVAX BP 1000H 默認段寄存器為SS指令操作例 MOVAX DATA BX 若 DS 6000H BX 1000H DATA 2A00H 63A00H 66H 63A01H 55H則物理地址 60000H 1000H 2A00H 63A00H指令執(zhí)行后 AX 5566H 見下頁圖示 25 操作碼 00偏移量低 2A偏移量高 DS60000 BX1000 DATA2A00 63A00 63A00H AH AL AX 代碼段 數(shù)據(jù)段 66H 55H MOVAX DATA BX 用途 操作數(shù)存放在存儲器地址指定的單元中 26 6基址 變址尋址 若操作數(shù)的偏移地址 由基址寄存器 BX或BP 給出 基址尋址方式由變址寄存器 SI或DI 給出 變址尋址方式 由一個基址寄存器的內(nèi)容和一個變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址 稱為基址 變址尋址 EA BX BP SI DI 同一組內(nèi)的寄存器不能同時出現(xiàn) 基址寄存器 變址寄存器 27 例 MOVAX BX SI MOVAX BX SI MOVAX DS BP DI 錯誤例 MOVAX BX BP MOVAX DI SI 用途 操作數(shù)存放在存儲器地址指定的單元中 28 83000 操作碼 DS80000 BX2000 SI1000 83000H AH AL AX 代碼段 數(shù)據(jù)段 YY XX 指令操作例 MOVAX BX SI 假定 DS 8000H BX 2000H SI 1000H則物理地址 80000H 2000H 1000H 83000H指令執(zhí)行后 AL 83000H AH 83001H 29 7相對的基址變址尋址 在基址 變址尋址的基礎上再加上一個相對位移量注意事項同基址 變址尋址 EA BX BP SI DI 8位16位 位移量 例 MOVAX BASE SI BX MOVAX BX BASE SI MOVAX BX SI BASE MOVAX BX BASE SI MOVAX BX SI BASE 基址 變址 用途 操作數(shù)存放在存儲器地址指定的單元中 30 指令操作例 MOVAX DATA DI BX 若 DS 8000H BX 2000H DI 1000H DATA 200H則指令執(zhí)行后 AH 83021H AL 83020H 83200 83200H AH AL AX DATA0200 操作碼 代碼段 數(shù)據(jù)段 YY XX DS80000 BX2000 DI1000 31 使用相對的基址 變址尋址方式可以很方便地訪問二維數(shù)組 基址寄存器 數(shù)組首地址 變址寄存器 數(shù)組元素行址 位移量 數(shù)組元素列址 偏移地址 二維數(shù)組例 內(nèi)存圖示 按行存儲 行位移地址 行內(nèi)元素下標 32 8隱含尋址 指令操作數(shù)是隱含的 在指令中未顯式地指明 例 MULBL指令隱含了被乘數(shù)AL及乘積AX類似的指令還有 XLAT DIV CBW MOVS等 AL BL AX 用途 操作數(shù)存放在寄存器或存儲器地址指定的單元中 33 如何尋找指令的地址呢 1 程序中將要執(zhí)行的指令的地址由CS IP指向 2 程序的第一條指令的地址 首地址 由操作系統(tǒng)OS分配產(chǎn)生 3 一般程序是一條接著一條的順序執(zhí)行的 所以CS IP自動加1即可實現(xiàn) 4 當程序跳轉(zhuǎn)執(zhí)行時 CS IP采用直接方式或間接方式改為跳轉(zhuǎn)到的指令地址 34 小結(jié) 指令由 和 構(gòu)成 如何取得操作數(shù) 稱為 操作碼 操作數(shù) 尋址方式 35 尋址方式可分8種 立即尋址 直接尋址 針對M I O 寄存器相對尋址 針對M 寄存器尋址 針對R 基址 變址尋址 針對M 基址 變址相對尋址 針對M 寄存器間接尋址 針對M I O 隱含尋址 針對R M 36 寄存器間接 寄存器相對 基址變址 相對基址變址4種尋址方式的比較 尋址方式指令操作數(shù)形式寄存器間接只有一個寄存器 BX BP SI DI之一 寄存器相對一個寄存器加上位移量基址 變址兩個不同類別的寄存器相對基址 變址兩個不同類別的寄存器加上位移量- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 指令系統(tǒng) 尋址 方式 樓俊君
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
相關搜索
鏈接地址:http://appdesigncorp.com/p-8579353.html