freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

微機原理與接口技術復習資料(34)章-文庫吧

2025-09-22 19:13 本頁面


【正文】 轉移類指令尋址(后面討論) 167。32 指令的機器碼表示方法 一、機器語言指令的編碼目的和特點 ? 匯編語言源程序:用匯編語言 (即主要由指令系統(tǒng)組成的語言)編寫的程序。 編譯程序 執(zhí)行 源程序 機器碼 運算結果 ? 編碼特點: ? 8086 指令的二進制編碼非常多,很難以一張表實現(xiàn)指令與機器語言的對照。 ? 為每種基本指令類型給出一個編碼格式,對照格式填上不同的數(shù)字表示不同的尋址方式、數(shù)據(jù)類型,即可求得每條指令的機器碼。 指令通常由操作碼和操作數(shù)兩部分組成。 ? 8086 指令系統(tǒng)采用變長指令,指令的長度可由 1~ 6 字節(jié)組成。 二、機器語言指令代碼的編制 ? ( MOV 指令為例): 其中, 第一個字節(jié): ▲高 6 位是操作碼 100010; ▲W 位說明傳遞數(shù)據(jù)的類型是字( W= 1)還是字節(jié)( W= 0); ▲D 位標明數(shù)據(jù)傳送的方向: D= 0,數(shù)據(jù)從寄存器傳出; D= 1,數(shù)據(jù)傳至寄存器; 第二個字節(jié): ▲REG 字段:寄存器號,用 3 位編碼尋址 8 種不同的寄存器,再根據(jù)第一字節(jié)中 W 位,選擇 8 位或 16位寄存器。如表 3l所示。 (對段寄存器, REG 字段占 2 位 ) 8086 寄存器編碼表 REG W=1(字) W=0(字節(jié)) 000 AX AL 011 BX BL 001 CX CL 010 DX DL 100 SP AH 111 DI BH 101 BP CH 110 SI DH ▲MOD 字段和 R/M 字段: MOV 指令的兩個操作數(shù)中有一個必為寄存器,另一個操作數(shù)可能是寄存器,也可能是存儲器單元,由指令代碼的第二個字節(jié)個的 MOD 和 R/M 字段指定。如下表所示。( 24 種不同的編碼格式, D8 表示 8 位位移量, D16 為 16 位位移量) 對指令進行編碼時,若包含 8 位位移量,則在編碼后增加一個宇節(jié)存放位移量 dispL;若包含 16位的位移量,則增加 2個字節(jié)存放位移量:第 3個字節(jié)存放位移量的低字節(jié) dispL,第 4 個字節(jié)存放位移量高字節(jié) dispH。 REG 段寄存器 01 CS 11 DS 00 ES 10 SS MOD(右) 00 01 10 11 R/M(下) W=0 W=1 MOD 和 R/M 的編碼 ? 2.寄存器間傳送指令的編碼 例 求指令 MOV SP, BX 的機器碼 解:指令的功能是將 BX 寄存器的內(nèi)容送到 SP 寄存器中。 從附錄 B 可知,該指令的操作碼為 1000l0;傳送的是字數(shù)據(jù),所以 w= 1; REG 字段:選擇 SP,則 REG 字段編碼= 100; D 位 =1:表示數(shù)據(jù)傳至所選的寄存器 (SP); MOD= 11:因另一個操作數(shù) BX 也是寄存器。 從表 32 查得 R/M= 011。根據(jù) W= l及寄存器名稱為 BX,求得指令編碼。 000 [BX]+[SI] [BX]+[SI]+D8 [BX]+[SI]+D16 AL AX 001 [BX]+[DI] [BX]+[DI]+D8 [BX]+[DI]+D16 CL CX 010 [BP]+[SI] [BP]+[SI]+D8 [BP]+[SI]+D16 DL DX 011 [BP]+[DI] [BP]+[DI]+D8 [BP]+[DI]+D16 BL BX 100 [SI] [SI]+D8 [SI]+D16 AH SP 101 [DI] [DI]+D8 [DI]+D16 CH BP 110 D16(直接地址) [BP]+D8 [BP]+D16 DH SI 111 [BX] [BX]+D8 [BX]+D16 BH DI ? 3.寄存器與存儲器間傳送指令的編碼 例:求指令 MOV CL, [BX+ 1234H]的機器碼。 解:功能是將有效地址為 (BX+ 1234H)存儲單元中的數(shù)據(jù)字節(jié)傳送到 CL 中; 第 2 字節(jié)可通過查表得到;第 3 字節(jié)存放 l6 位位移量的低字節(jié) 34H; 第 4 字節(jié)存放高字節(jié) 12H。 所以該指令的編碼為 8A 8F 34 12H。 ? 4.立即數(shù)尋址指令的編碼 例 求指令 MOV [BX 十 2100H], 0FA50H 的機器碼。 解:指令的功能是將 16 位立即數(shù) 0FA50H 送到有效地址為 (BX+ 2100H)的字存儲單元中;其中低字節(jié) 50H 送列〔 BX+ 2100H〕單元,高字節(jié) FAH 送到 (BX+ 2101H)單元; 指令中不但有 16 位立即數(shù),還有 16位位移量; 查附錄 B 知,該指令的 6 字節(jié)編碼為: C7 87 00 21 50 FA。 ? 5.包含段寄存器的指令的編碼 含有段寄存器的指令,寄存器字段 REG 占有 2 位,從表 31 可得,相應的編碼為:CS= 01, DS= 11, ES=00, SS= l0。 例 求指今 MOV DS, AX 的機器碼。 解:指令功能為將 AX 寄存器的內(nèi)容傳送到數(shù)據(jù)段寄存器 DS; 從附錄 B 中查到該指令的編碼格式為: 10001110 MOD 0 REG R/M ; 段寄存器 DS 的編碼為 11 ,即 REG 字段為 11;另一個操作數(shù)也是寄存 器,所以 MOD= 11,而 R/M 字段應填上 AX 的三位代碼 000; 得到該指令的編碼為: 8E D8H。 ? 6.段超越前綴指令的編碼 該類指令進行編碼時,在指令代碼前加一個 8 位的段超越的綴代碼,代碼的格式為 001110,其中 位表明段超越寄存器,編碼與上面列出的相同。 例 若指令 MOV [BX], DL 的編碼為 88 17H, 試求指令 MOV CS: [BX], DL 的代碼。 解:該指令的編碼是在不帶段超越前綴的指令代碼 88 17H 前,加上一個字節(jié)001110。由于段寄存器 CS 的代碼為 01,所以指令的第 1 個字節(jié)的編碼為 00101110,即 2EH。 可得到該指令的機器碼為 2E 88 17H 微機系統(tǒng)指令的機器碼表示方法(自學) 167。33 8086 的指令系統(tǒng) 六類指令(按功能): 一、數(shù)據(jù)傳送指令 ( 14 條) 通用數(shù)據(jù)傳送指令 地址目標傳送指令 MOV 字節(jié)或字的傳送 LEA 裝入有效地址 PUSH 入棧指令 LDS 裝入數(shù)據(jù)段寄存器 POP 出棧指令 LES 裝入附加段寄存器 XCHG 交換字或字節(jié) 標志傳送指令 XLAT 表轉換 LAHF 標志寄存器低字節(jié)裝入 AH 輸入輸出指令 SAHF AH 內(nèi)容裝入標志寄存器低字節(jié) IN 輸入 PUSHF 標志寄存器入棧指令 OUT 輸出 POPF 出棧,并送入標志寄存器 ? 通用數(shù)據(jù)傳送指令 (General Purpose Data Transfers) ? MOV 傳送指令( Move) 指令格式: MOV 目的,源 指令功能:實現(xiàn) CPU 的內(nèi)部寄存器間或寄存器與存儲器間的數(shù)據(jù)傳送。 例 : MOV AX, 0FF00H MOV [DI], AX MOV CX, [1000H] MOV BL, 40H MOV WORD PTR[SI], 01H MOV AL, BL ? 注意: ? 指令中至少要有一項明確說明傳送的是字節(jié)還是字; ? IP 寄存器不能用作源操作數(shù)或目的操作數(shù); ? 立即數(shù)和 CS 寄存器不能用作目的操作數(shù); ? 除了源操作數(shù)為立即數(shù)的情況外,兩個操作數(shù)中必有一個是寄存器,但不能都是段寄存器。(即 MOV 指令不能在兩個存儲單元之間直接傳送數(shù)據(jù),也不能在兩個段寄存器之間直接傳送數(shù)據(jù)) ? 【數(shù)據(jù)段】數(shù)據(jù)通常存放在數(shù)據(jù)段中。 例如,某個程序的數(shù)據(jù)段: DATA SEGMENT ;數(shù)據(jù)段開始 AREA1 DB 14H, 3BH ;定義字節(jié)變量 AREA2 DB 3 DUP( 0) ;復制操作 ARRAY DW 3100H, 01A6H ;定義字變量 STRING DB ‘GOOD’ DATA ENDS ;數(shù)據(jù)段結束 匯編后, DATA 將被賦予一個具體的段地址。各變量將自偏移地址 0000H 開始依次存放,各符號地址等于它們在數(shù)據(jù)段中的偏移量。 AREA1 的偏移地址為 0000H; AREA2 的偏移地址為 0002H; ARRAY 的偏移地址為 0005H; STRING 的偏移地址為 0009H。 例 MOV DX, OFFSET ARRAY 解: ARRAY 的偏移地址 。( OFFSET:取后面的符號偏移地址的值) 設: ARRAY 的定義如左圖所示 則: DX = 0005H 例 : MOV AL, AREA1 。ALAREA1 中的內(nèi)容 14H MOV AREA2, AL 。 0002H 單元 14H ? PUSH 進棧指令( Push Word onto Stack) ? 指令格式: PUSH 源 ? 指令功能:數(shù)據(jù)入堆棧 ? 工作過程: SP←SP — 2; ( SP+ 1, SP) ←源 ? 源 操作數(shù)要求:可以是 16 位通用寄存器、段寄存器、存儲器中的數(shù)據(jù)字,但不能是立即數(shù)。 ? POP 出棧指令( Pop Word off Stack) ? 指令格式: POP 目的 ? 指令功能:數(shù)據(jù)出堆棧 ? 工作過程:目的 ←( SP+1, SP) SP ← SP + 2; ? 目的操作數(shù)要求: 可以是 16 位通用寄存器、段寄存器或存儲單元,但 CS 不能作目的操作數(shù)。 ? PUSH、 POP 指令實例 ? XCHG 交換指令 (Exchange) ? 指令格式: XCHG 目的,源 ? 指令功能:源操作數(shù)、目的操作數(shù)數(shù)據(jù)交換。 ? 操作數(shù)要求:交換可以在寄存器之間、寄存器與存儲器之間進行; 段寄存器不能作為操作數(shù);不能直接交換兩個存儲單元中的內(nèi)容。 例 設 AX = 2020H, DS = 3000H, BX = 1800H,( 31A00H) = 1995H。則執(zhí)行指令 XCHG AX, [BX+200H]后,結果如何? 解:把內(nèi)存中的一個字與 AX 中的內(nèi)容進行交換。 源操作數(shù)物理地址= 300010H + 1800H + 200H= 31A00H, 指令執(zhí)行后: AX= 1995H,( 31A00H)= 2020H ? XLAT 表轉換指令( Table LookupTranslation) ? 指令格式: XLAT 轉換表 或: XLAT ? 指令功能:使累加器( AL)中的一個值變換為內(nèi)存表格中的某一個值,一般用來實現(xiàn)代碼轉換,即查表功能。 ? XLAT 指令使用步驟: ? 使用之前必須先建立一個表格,表格中的內(nèi)容是所需要轉換的代碼; ? 將轉換表的起始地址裝入 寄存器; ? 欲查的某項與表頭地址的位移量 ,即表格最多包含 256個字節(jié); ? 執(zhí)行 XLAT 指令后,根據(jù)位移量從表中查到轉換后的代碼值 AL 寄存器中。 例 若十進制數(shù)字 0~ 9 的 LED 七段碼對照表如表所示,試用 XLAT 指令求數(shù)字 5 的七段碼值。 十進制數(shù)的七段顯示碼表 0011, 0000 十進制數(shù)字 七段顯示碼 十進制數(shù)字 七段顯示碼 0 40H 5 12H 1 79H 6 02H 2 24H 7 78H 3 30H 8 00H 4 19H 9 18H 程序如下: TABLE DB 40H, 79H, 24H, 30H, 19H;七段數(shù)碼表數(shù)據(jù) DB 12H, 02H, 78H, 00H, 18H;分別對應 0~ 9 的七段字型碼 …………… MOV AL, 5 ; AL ? 數(shù)字 5 的位移量 MOV BX, OFFSET TABLE ; BX ? 表格首地址 XLAT TABLE
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1