pentium指令系統(tǒng).ppt
《pentium指令系統(tǒng).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《pentium指令系統(tǒng).ppt(84頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第3章Pentium的指令系統(tǒng) 本章要點(diǎn) Pentium尋址方式和指令系統(tǒng) 匯編語(yǔ)言的尋址方式傳送指令 算術(shù)運(yùn)算指令 邏輯運(yùn)算指令和移位指令的用法 串操作指令 控制轉(zhuǎn)移指令匯編語(yǔ)言源程序的規(guī)范格式偽指令及其使用 第3章Pentium的指令系統(tǒng) 3 1Pentium的尋址方式3 2Pentium的指令系統(tǒng)3 3匯編語(yǔ)言中的標(biāo)記 表達(dá)式和偽指令 3 1Pentium的尋址方式 匯編語(yǔ)言指令要解決的兩個(gè)問(wèn)題 要指出進(jìn)行什么操作 操作符 要指出操作數(shù)和操作結(jié)果放在何處 尋址方式 3 1Pentium的尋址方式 立即數(shù)尋址寄存器尋址存儲(chǔ)器尋址輸入 輸出端口尋址 1 立即數(shù)尋址 操作數(shù)就在指令中提供 叫立即數(shù)尋址方式 比如 MOVAL 80HMOVAX 1090H 2 寄存器尋址 操作數(shù)放在寄存器中 指令中給出寄存器名 寄存器尋址方式 比如 INCCXROLAH 1MOVECX EAX 3 存儲(chǔ)器尋址 數(shù)據(jù)在存儲(chǔ)器中 偏移地址 有效地址EA 由指令給出 存儲(chǔ)器尋址 EA 基址 變址x比例因子 位移量 尋址計(jì)算方法 存儲(chǔ)器尋址 1 直接尋址方式如 INCWORDPTR 500H 2 寄存器間接尋址方式如 MOV ECX EDX任何32位通用寄存器 BX BP SI DI SP ESP BP EBP BP 默認(rèn)段為SS 其他寄存器默認(rèn)段為DS 3 寄存器相對(duì)尋址方式如 MOVECX EAX 24 存儲(chǔ)器尋址 4 基址變址尋址方式如 MOVEAX ESI EBX 5 相對(duì)基址變址尋址方式如 ADDEDX ESI EBP 100H 存儲(chǔ)器尋址 6 相對(duì)的帶比例因子的變址尋址方式如 IMULEBX ESI 4 7 7 基址加帶比例因子的變址尋址方式如 MOVECX EDI 8 EAX 8 相對(duì)的基址加帶比例因子的變址尋址方式如 MOVEAX EDI 4 EBP 80 4 輸入 輸出端口尋址 I O直接尋址I O端口地址直接在指令中提供例 INAL 82HOUT80H AXI O間接尋址在DX寄存器中設(shè)置好I O端口地址例 INAL DXOUTDX AX 3 2Pentium的指令系統(tǒng) 傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令串操作指令調(diào)用 轉(zhuǎn)移 循環(huán)控制 中斷指令標(biāo)志操作和處理器控制指令條件測(cè)試和字節(jié)設(shè)置指令位處理指令系統(tǒng)管理指令支持高級(jí)語(yǔ)言指令 1 傳送指令 通用傳送指令 MOVMOVZXMOVSX堆棧操作指令 PUSHPOPPUSHAPOPAPUSHADPOPAD交換指令 XCHGBSWAP輸入 輸出指令 INOUT換碼指令 XLATXLATB地址傳送指令 LEALDSLESLSSLFSLGS標(biāo)志傳送指令 LAHFSAHFPUSHFPOPFPUSHFDPOPFD 1 傳送指令 輸入指令I(lǐng)N長(zhǎng)格式 INAL PORT 字節(jié) INAX PORT 字 執(zhí)行的操作 AL PORT 字節(jié) AX PORT 1 PORT 字 短格式 INAL DX 字節(jié) INAX DX 字 執(zhí)行的操作 AL DX 字節(jié) AX DX 1 DX 字 輸入 輸出指令I(lǐng)N OUT 8086支持64K個(gè)I O端口 地址范圍0000 FFFFH 前256個(gè)端口 0 FFH 可以直接在指令中指定 即長(zhǎng)格式 直接尋址 當(dāng)端口號(hào) 256時(shí) 只能使用短格式 間接尋址 1 傳送指令 MOVCX 1000H MOVWORDPTR SI 6070HPUSHAXPUSH BX DI XCHGBX CXXCHG 2530H AXINAL 60HOUT61H AXINAL DXOUTDX AX 1 傳送指令 XLATLEAAX 3820H LDSDI 2530H LESDX 1000H 舉例 堆棧存放了字符串的首地址 SUB子程序中在調(diào)用顯示字符串子程序DISP之前 應(yīng)取出字符串首地址 SUBPROCPUSHBPMOVBP SPPUSHESPUSHDILESDI BP 04 CALLDISP POPDIPOPESPOPBPRETSUBENDP SP 2 算術(shù)運(yùn)算指令 加法指令 ADDADCINCXADD減法指令 SUBSBBDECNEGCMPCMPXCHGCMPXCHG8B乘法指令 MULIMUL除法指令 DIVIDIV類(lèi)型轉(zhuǎn)換指令 CBWCWDCWDECDQBCD碼指令 AAADAAAASDASAAMAAD 算術(shù)運(yùn)算指令舉例 設(shè)W X Y Z均為16位帶符號(hào)數(shù) 編寫(xiě)程序計(jì)算表達(dá)式 W X Y Z 220 X 將表達(dá)式的商和余數(shù)存入數(shù)據(jù)區(qū)RESULT單元開(kāi)始的區(qū)域中 DATASEGMENTWDW 304XDW1000YDW 12ZDW20RESULTDW2DUP DATAENDS CODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVAX XIMULYMOVCX AXMOVBX DXMOVAX ZCWDADDCX AXADCBX DXSUBCX 220SBBBX 0MOVAX WCWDSUBAX CXSBBDX BXIDIVX MOVRESULT AXMOVRESULT 2 DXMOVAH 4CHINT21HCODEENDSENDSTART W X Y Z 220 X 3 邏輯運(yùn)算和移位指令 邏輯運(yùn)算指令 ANDORNOTXORTEST移位指令 SHLSHRSALSARROLRORRCLRCRSHLDSHRD 邏輯運(yùn)算指令舉例 編寫(xiě)程序計(jì)算S A B 2 AANDB x2 DATASEGMENTADB12BDB51SDB DATAENDS CODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVAL AADDAL BSHRAL 1MOVAH AANDAH BSHLAH 1SUBAL AHMOVS AL MOVAH 4CHINT21HCODEENDSENDSTRAT 移位指令舉例 已知 BX 84F0H 把 BX 中的16位數(shù)每4位壓入堆棧 MOVCH 4MOVCL 4NEXT ROLBX CLMOVAX BXANDAX 0FHPUSHAXDECCHJNZNEXT 4 串操作指令 字符串傳送指令 MOVSBMOVSWMOVSD字符串比較指令 CMPSBCMPSWCMPSD字符串檢索指令 SCASBSCASWSCASD取字符串指令 LODSBLODSWLODSD存字符串指令 STOSBSTOSWSTOSDI O串操作指令 INSBINSWINSDOUTSBOUTSWOUTSD 串操作指令舉例 MOVSI 1000H 源地址為1000HMOVDI 2000H 目的地址為2000HMOVCX 100 字符串長(zhǎng)100個(gè)字節(jié)CLD 方向標(biāo)志清0 使指針按增量方向修改REPMOVSB 將源地址開(kāi)始的100個(gè)字節(jié)傳送到目的地址 假設(shè)AL中為鍵盤(pán)命令字節(jié) 0EEDH開(kāi)始的4個(gè)單元中存放了 4個(gè)符號(hào)對(duì)應(yīng)的ASCII碼 如果鍵盤(pán)命令字節(jié)與上面4個(gè)符號(hào)中的某一個(gè)相等 則在440H開(kāi)始的對(duì)應(yīng)單元加1 MOVDI 0EEDHCLDMOVCX 4MOVDX CXREPNZSCASBJNZAAASUBDX CXDECDXMOVDI DXINCBYTEPTR DI 440H AAA 將0700H單元開(kāi)始的5個(gè)字節(jié)的內(nèi)容取出放在累加器中處理 處理以后再送到0700H的內(nèi)存區(qū)域 CLDMOVSI 0700HMOVDI SIMOVCX 5LI LODSBPUSHCX MOV DI ALINCDIPOPCXDECCXJNZLI 5 調(diào)用 轉(zhuǎn)移 循環(huán)控制 中斷指令 子程序調(diào)用和返回指令 CALLRET無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移指令 JMPJC循環(huán)控制指令 LOOPLOOPZ LOOPELOOPNZ LOOPNE中斷和中斷返回指令 INTIRETIRETD 設(shè)2000H開(kāi)始的存儲(chǔ)區(qū)中 存放著14H個(gè)數(shù)據(jù) 要求找出其中最大的一個(gè)數(shù) 并存放在2000H單元中 GETMAX MOVBX 2000HMOVAL BX MOVCX 13HP1 INCBXCMPAL BX JAEP2MOVAL BX P2 DECCXJNZP1MOVBX 2000HMOV BX AL 轉(zhuǎn)移指令舉例 循環(huán)控制指令舉例 例子 MOVCX 28HMOVSI 0FFHNEXT INCSICMPBYTEPTR SI 0LOOPZNEXTJNZOKKCALLDISPLAY1RETOKK CALLDISPLAY2RET 中斷指令舉例 例1 顯示一個(gè)字符串和接收一個(gè)字符串 KEYBUFDB10 10DUP MEDB INPUTYOURPASSWORD DAI MOVDX OFFSETMEMOVAH 9INT21HKEYIN MOVDX OFFSETKEYBUFMOVAH 0AHINT21H 顯示字符串DS DX 串地址字符串以 結(jié)尾 鍵盤(pán)輸入到緩沖區(qū)DS DX 緩沖區(qū)首址 DS DX 緩沖區(qū)最大字符數(shù) DS DX 1 實(shí)際輸入的字符數(shù) INT指令舉例 例2 將中斷處理程序進(jìn)行裝配INTERSET CLIMOVDX OFFSETMYPROGMOVAL 50HMOVAH 25HINT21H例3 把鍵盤(pán)輸入的字符讀到AL寄存器中MOVAH 01INT21H 設(shè)置中斷向量DS DX 中斷向量AL 中斷類(lèi)型號(hào) 鍵盤(pán)輸入并回顯AL 輸入字符 INT指令舉例 例4 把DL中的字符顯示在屏幕上 MOVDL A MOVAH 02INT21H 顯示輸出DL 輸出字符 INT指令舉例 例5 清除屏幕CLEAR MOVAH 6MOVAL 0MOVCH 0MOVCL 0MOVDH 24MOVDL 79MOVBH 7INT10H 屏幕初始化或上卷AL 0初始化窗口AL 上卷行數(shù)BH 卷入行屬性CH CL 左上角行 列號(hào)DH DL 右上角行 列 INT指令舉例 例6 使光標(biāo)定位在窗口的左下角POS CURSE MOVAH 2MOVDH 16MOVDL 30MOVBH 0INT10H 置光標(biāo)位置BH 頁(yè)號(hào)DH DL 行 列 6標(biāo)志操作和處理器控制指令 標(biāo)志操作指令暫停指令和無(wú)操作指令交權(quán)指令和等待指令總線封鎖指令 標(biāo)志操作指令 CLC STC CMC CLD STD CLI STI 暫停指令和無(wú)操作指令 HLT功能 CS和EIP IP 指向HLT后面的一條指令的地址 而CPU暫停工作 硬件中斷 復(fù)位操作可使CPU退出暫停狀態(tài) NOP功能 CPU不進(jìn)行任何操作 交權(quán)指令和等待指令 交權(quán)指令ESC CPU調(diào)用協(xié)處理器工作 等待指令WAIT 放在ESC之后 使主處理器等待協(xié)處理器的處理結(jié)果 CPU測(cè)試TEST 引腳上的信號(hào) 直到有停止信號(hào)為止 總線封鎖指令 LOCK功能 對(duì)總線實(shí)行封鎖 放在其它指令之前 指令前綴 如 LOCKXCHGAL 2000H 不允許用在重復(fù)串操作指令之前 以防串操作要訪問(wèn)的頁(yè)面不在內(nèi)存時(shí) 由LOCK前綴長(zhǎng)期封鎖總線而妨礙操作系統(tǒng)將所需頁(yè)面調(diào)入內(nèi)存 而引起故障 7條件測(cè)試和字節(jié)設(shè)置指令 1 基于某個(gè)標(biāo)志測(cè)試的字節(jié)設(shè)置指令SETZ SETE SETNZ SETNE SETO SETNO SETC SETNC SETS SETNS SETP SETNP如 SETZAL 2 基于無(wú)符號(hào)數(shù)比較的字節(jié)設(shè)置指令SETB SETNAE SETC SETNB SETAE SETNC SETBE SETNA SETNBE SETA如 CMPVAR 10000SETBEWITHIN 3 基于有符號(hào)數(shù)比較的字節(jié)設(shè)置指令SETL SETNGE SETNL SETGE SETLE SETNG SETNLE SETG 8位處理指令 1位測(cè)試和設(shè)置指令BT BTS BTR BTC386將選中的位裝入CF 再對(duì)此位操作 如 BTAX 2BTSEAX 12位掃描指令BSF BSR386對(duì)一個(gè)字或雙字掃描 并將第一個(gè)為1的序號(hào)找出來(lái) 如 BSFCX AXBSRECX EAX 位掃描指令BSF BSR 磁盤(pán)操作系統(tǒng)中 經(jīng)常用位圖來(lái)表示扇區(qū)使用情況 位圖是一個(gè)布爾陣列 若第N個(gè)扇區(qū)為空 則第N位為1 否則為零 設(shè)位圖地址從MAP開(kāi)始 整個(gè)位圖由N個(gè)雙字組成 SSS CLDMOVEDI MAPMOVECX NSUBEAX EAXREPZSCASDJZFAILBSFEAX EDI 4 FAIL 9系統(tǒng)管理指令 主要用于對(duì)系統(tǒng)的設(shè)置和測(cè)試 1 系統(tǒng)測(cè)試和管理指令RDTSC CPUID RSMpentium INVLPG486RDTSC讀時(shí)鐘周期數(shù)指令讀取記錄時(shí)鐘周期數(shù)的64位計(jì)數(shù)器的值送EDX EAX CPUID讀取CPU的標(biāo)識(shí)等有關(guān)信息獲得Pentium處理器的類(lèi)型等有關(guān)信息 RSM復(fù)位到系統(tǒng)管理模式INVLPGmTLB項(xiàng)清除指令使轉(zhuǎn)換檢測(cè)緩沖器TLB的32個(gè)表項(xiàng)中用m指出的當(dāng)前項(xiàng)清除 9系統(tǒng)管理指令 2 狀態(tài)字操作指令LMSW SMSW CLTS386LMSW 裝入機(jī)器狀態(tài)字指令如 LMSW SP SMSW 存儲(chǔ)機(jī)器狀態(tài)字指令CLTS功能 清除機(jī)器狀態(tài)字中的任務(wù)切換標(biāo)志TS 9系統(tǒng)管理指令 3 描述符表指令SGDT SLDT SIDTLGDT LLDT LIDT386LGDT LLDT LIDT 裝入全局 局部 中斷描述符表寄存器指令如 LGDTMEM1SGDT SLDT SIDT功能 分別將全局描述符表寄存器 局部描述符表寄存器 中斷描述符表寄存器的內(nèi)容送到存儲(chǔ)器中 9系統(tǒng)管理指令 4 任務(wù)寄存器指令LTR STR386LTR 裝入任務(wù)寄存器指令STR 存儲(chǔ)任務(wù)寄存器指令如 STR EBX 9系統(tǒng)管理指令 5 段選擇子操作指令VERR VERWLSLLARARPL386VERR VERW 檢測(cè)段類(lèi)型指令VERR檢測(cè)一個(gè)選擇子所對(duì)應(yīng)的段是否可讀VERW檢測(cè)一個(gè)選擇子所對(duì)應(yīng)的段是否可寫(xiě) 如 VERRSELE1LAR 裝入請(qǐng)求特權(quán)級(jí)指令如 LARAX SELECTLSL 裝入段界限值指令如 LSLBX SELECTARPL 調(diào)整請(qǐng)求特權(quán)級(jí)指令如 ARPLMEM WORD BX 9系統(tǒng)管理指令 6 測(cè)試寄存器指令RDMSRWRMSRpentiumRDMSR讀取測(cè)試寄存器的指令ECX中設(shè)置寄存器號(hào) 可為0 14H 讀取內(nèi)容在EDX EAX中WRMSR寫(xiě)入測(cè)試專(zhuān)用寄存器的指令將EDX EAX中64位數(shù)寫(xiě)入測(cè)試專(zhuān)用寄存器 9系統(tǒng)管理指令 7 Cache操作指令I(lǐng)NVDWBINVD486INVDCache清除指令將片內(nèi)Cache中的內(nèi)容清除 并使外部電路清除外部Cache中的內(nèi)容 WBINVDCache清除和回寫(xiě)指令將片內(nèi)Cache中的內(nèi)容清除 并外部電路將外部Cache中的數(shù)據(jù)回寫(xiě)到主存 再清除外部Cache中的內(nèi)容 10支持高級(jí)語(yǔ)言指令 常常嵌入高級(jí)語(yǔ)言編寫(xiě)的程序中 BOUND386 功能 檢查16位寄存器或32位寄存器中給定的值是否符合給定的界限 如 BOUNDEBX MEM DWORD 10支持高級(jí)語(yǔ)言指令 ENTER386 功能 進(jìn)入過(guò)程時(shí) 建立一個(gè)堆??臻g 第一個(gè)操作數(shù)指出局部變量所需要的存儲(chǔ)字節(jié)數(shù) 第二個(gè)操作數(shù)指出過(guò)程嵌套的級(jí)別0 31 如 ENTER48 3LEAVE386 功能 消除所有局部變量 釋放過(guò)程所占的堆棧空間 不帶參數(shù) ENTER指令 3 3匯編語(yǔ)言中的標(biāo)記 表達(dá)式和偽指令 匯編語(yǔ)言中的標(biāo)記表達(dá)式語(yǔ)句偽指令 匯編語(yǔ)言中的標(biāo)記 一個(gè)完整的匯編語(yǔ)言的語(yǔ)句組成 標(biāo)識(shí)符保留字分界符常數(shù)注釋 匯編語(yǔ)言中的標(biāo)記 1 標(biāo)識(shí)符不能以數(shù)字開(kāi)頭 可以由數(shù)字 字母和下劃線組合而成 2 保留字匯編語(yǔ)言中預(yù)先保留的具有特殊含義的符號(hào) 3 分界符作為兩個(gè)部分的分隔符號(hào)用 匯編語(yǔ)言中的標(biāo)記 4 常數(shù)后面字母B來(lái)表示二進(jìn)制數(shù)后面字母D 可不加 表示十進(jìn)制數(shù)后面字母H來(lái)表示十六進(jìn)制數(shù)后面字母O或Q來(lái)表示八進(jìn)制數(shù)帶單引號(hào)的字符串如 ABC 5 注釋注釋要用分號(hào) 打頭 表達(dá)式 由操作數(shù)和運(yùn)算符組成 1 操作數(shù)可以是 常數(shù) 標(biāo)識(shí)符 代表一個(gè)數(shù)據(jù) 或一個(gè)地址 2 運(yùn)算符算術(shù)運(yùn)算符加 減 乘 除 取模運(yùn)算符MOD邏輯運(yùn)算符與 AND 或 OR 非 NOT 和異或 XOR 運(yùn)算 表達(dá)式 關(guān)系運(yùn)算符相等EQ 不等NE 小于LT 大于GT 小于或等于LE 大于或等于GE 關(guān)系不成立 數(shù)值為0 成立 數(shù)值為0ffffh或0ffffffffh分析運(yùn)算符和綜合運(yùn)算符分析運(yùn)算符 OFFSET SEG TYPE LENGTH SIZE如 KEYBUFDW100DUP 綜合運(yùn)算符 PTR如 MOVBYTEPTR 1000H 0MOVWORDPTR 1000H 0 語(yǔ)句 宏匯編語(yǔ)言中的兩種語(yǔ)句 指令性語(yǔ)句如 ADDAL BLMOVAX 1000指示性語(yǔ)句指示性語(yǔ)句即偽指令如 DBSEG 偽指令 最常用的偽指令有 確定CPU的偽指令 586 586P標(biāo)號(hào)賦值偽指令EQU如 ABCEQU220定義存儲(chǔ)單元偽指令DB DW DD DQ DT如 TABLEDB00 01 02定義存儲(chǔ)單元類(lèi)型偽指令BYTE WORD DWORD如 INCBYTEPTR DI 段定義偽指令SEGMENT ENDS ASSUME和ORG簡(jiǎn)約段定義偽指令 DATA STACK CODE MODEL定義過(guò)程偽指令PROC ENDP NEAR FAR源程序結(jié)束偽指令END sta1segment stack sta1endsda1segmentword public use16 data da1endscodesegmentassumecs code ds da1 ss sta1start movax da1movds axmovax sta1movss ax movax 4c00hint21hcodeendsendstart 完整段定義格式 modelsmall 586 stack100h data codestart movax datamovds ax movax 4c00hint21hendstart 簡(jiǎn)化段定義格式 匯編語(yǔ)言源程序規(guī)范格式 DATASEGMENTDAIDB0DB PROGRAMASM DB40DUP BUFDMADB80HDUP DATAENDSSTACKSEGMENTME1DB80HDUP STACKENDS CODESEGMENTASSUMECS CODE DS DATA SS STACK ES DATAORG100HSTART MOVAX DATAMOVDS AXMOVAX STACKMOVSS AXMOVDX OFFSETDAIMOVAH 13HINT21HMOVDX OFFSETDAIMOVAH 16HINT21H MOVDX OFFSETBUFDMAMOVAH 1AHINT21HMOVAX OFFSETDAI 12MOVBX AXMOV BX 0MOVAX OFFSETDAI 32MOVBX AXMOV BX 0MOVSI 2000H MOVE MOVDI OFFSETBUFDMAMOVCX 80HCLDPUSHCSPOPESREPMOVSBMOVCX 80HMOVAL 1AHMOVDI OFFSETBUFDMAPUSHCSPOPESREPNZSCASBJZCLOSEPUSHSI MOVDX OFFSETDAIMOVAH 15HINT21HPOPSIJMPMOVECLOSE MOVDX OFFSETDAIMOVAH 15HINT21HMOVDX OFFSETDAIMOVAH 10HINT21HCODEENDSEND DDATASEGMENTMESDB TheHEXcodeofDECcodeare BUFDB30H 30H 30H 31H 32HDB10HDUP 0 DDATAENDSCODESEGMENTASSUMECS CODE DS DDATASTART MOVAX DDATAMOVDS AXMOVSI OFFSETBUFMOVBX 000AHMOVCX 0004HMOVAH 00HMOVAL SI SUBAL 30H A1 IMULBXADDAL SI 01 SUBAL 30HINCSILOOPA1MOV SI 1 AXMOVDX OFFSETMESMOVAH 09HINT21HINCSIINCSICALLSHOWDECSICALLSHOWMOVAX 4C00HINT21H 綜合舉例 分析程序輸出 分析程序輸出 SHOWPROCNEARMOVAL DS SI ANDAL 0F0H 取高4位SHRAL 4CMPAL 0AH 是否是A以上的數(shù)JBC2ADDAL 07HC2 ADDAL 30HMOVDL AL showcharacterMOVAH 02HINT21HMOVAL DS SI ANDAL 0FH 取低4位CMPAL 0AHJBC3 ADDAL 07HC3 ADDAL 30HMOVDL ALMOVAH 02HINT21HRETSHOWENDPCODEENDSENDSTART TD調(diào)試環(huán)境說(shuō)明 見(jiàn)tdshili exe 思考 給定 BX 1234H SI 5678H 位移量D 3344H 是確定以下各種尋址方式的有效地址EA是什么 立即尋址 直接尋址 使用BX的寄存器尋址 使用BX的寄存器間接尋址 使用BX的寄存器相對(duì)尋址 基址變址尋址 相對(duì)基址變址尋址 思考 如果數(shù)據(jù)段符號(hào)地址DBUF為3100H 并從它開(kāi)始存放1234H 請(qǐng)問(wèn)執(zhí)行以下指令后寄存器AX的內(nèi)容是什么 LEAAX DBUFMOVAX DBUF 思考 已知程序段如下 請(qǐng)說(shuō)明完成什么操作 MOVCL 3MOVAL 0F0HSARAL CL已知AH 0FDH AL 03 請(qǐng)說(shuō)明執(zhí)行下列程序段后 程序?qū)⑥D(zhuǎn)向哪一個(gè)符號(hào)地址W1 W2或W3 ADDAH ALJNOW1JNCW2JZW3 思考 根據(jù)以下描述寫(xiě)出數(shù)據(jù)段的定義 已知數(shù)據(jù)段中的VAR1的偏移地址為0010H 占3個(gè)字節(jié) 初始化數(shù)據(jù)為20H 30H 40H VAR2占1個(gè)字 初始化數(shù)據(jù)為5678H VAR1和VAR2之間有13個(gè)字節(jié)的距離 VAR1有字類(lèi)型的名字VAR1 WORD VAR2有字節(jié)類(lèi)型的名字VAR2 BYTE 思考 已知從數(shù)據(jù)段DATA單元開(kāi)始存放字節(jié)型的帶符號(hào)數(shù)X和Y 請(qǐng)?jiān)O(shè)計(jì)計(jì)算Y 6X 8的程序 已知X Y是字節(jié)型的無(wú)符號(hào)數(shù) 請(qǐng)?jiān)O(shè)計(jì)程序計(jì)算 已知從數(shù)據(jù)段BUF單元開(kāi)始存放15個(gè)字節(jié)型數(shù)據(jù) 請(qǐng)?jiān)O(shè)計(jì)程序?qū)⑵渲胸?fù)數(shù)和零分別送往MINUS和ZERO開(kāi)始的存儲(chǔ)器單元 要求從鍵盤(pán)輸入一個(gè)以 為起始符 以空格為結(jié)束符的字符串 并在屏幕上顯示 顯示格式為X ABC 其中X是輸入字符串的個(gè)數(shù) 不包括起始符 和空格符 ABC 是輸入的字符 補(bǔ)充 保護(hù)模式下編程 程序功能 將數(shù)據(jù)段1中的內(nèi)容傳送到數(shù)據(jù)段2中 程序分析 實(shí)現(xiàn)程序功能會(huì)用到三個(gè)段 代碼段 源數(shù)據(jù)段 目的數(shù)據(jù)段 每個(gè)段必須由描述符來(lái)定義 把它們放在GDT或LDT中 對(duì)段操作時(shí) 需要使用與段對(duì)應(yīng)的選擇子 段描述符對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu) DSECSTRUCLimitLdw0BaseLdw0BaseMdb0Attributesdb0LimitHdb0BaseHdb0DSECENDS 保護(hù)模式下編程 代碼段描述符 ATCE 98H 只執(zhí)行代碼段屬性SCODEDSEC數(shù)據(jù)段描述符 ATDR 90H 只讀數(shù)據(jù)段屬性ATDW 92H 可讀 寫(xiě)數(shù)據(jù)段屬性DATASDSECDATADDSEC 保護(hù)模式下編程 描述符表及選擇子 DSEGSEGMENTUSE16GDTLABELBYTEID1DESCSCODEDESCDATASDESCDATADDESCGDTLEN GDTSCODE SEL SCODE GDTDATAS SEL DATAS GDTDATAD SEL DATAD GDTID2DESCID3DESCDSEGENDS 參考程序 386PDESCSTRUCLIMITLDW0BASELDW0BASEMDB0ATTRDB0LIMITHDB0BASEHDB0DESCENDSATCE 98HATDR 90HATDW 92H 參考程序 DSEGSEGMENTUSE16GDTLABELBYTEID1DESCSCODEDESCDATASDESCDATADDESCGDTLEN GDTSCODE SEL SCODE GDTDATAS SEL DATAS GDTDATAD SEL DATAD GDTID2DESCID3DESCDSEGENDS 參考程序 DSEG1SEGMENTUSE16HELLODB Hello everybody DB ThisismyfirstPMprogram DB256HDUP 0 D1LEN HELLO 1DSEG1ENDSDSEG2SEGMENTUSE16BUFLEN 256BUFFERDBBUFLENDUP 0 DSEG2ENDS CSEGSEGMENTUSE16ASSUMECS CSEG DS DSEG1 ES DSEG2STARTPROCMOVAX DATAS SELMOVDS AXMOVAX DATAD SELMOVES AXCLDXORSI SIXORDI DIMOVCX BUFLENM1 MOVSBLOOPM1INT0FFHSTARTENDPCLEN START 1CSEGENDSENDSTART- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- pentium 指令系統(tǒng)
鏈接地址:http://www.820124.com/p-6399171.html