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

正文內(nèi)容

[信息與通信]第三章8086尋址方式和指令系統(tǒng)(參考版)

2025-01-01 12:09本頁(yè)面
  

【正文】 調(diào)整過程: 把 AL寄存器中的內(nèi)容除以 10,商放到 AH中,余數(shù)在 AL中,即: AL/10所得的商 → AH AL/10所得的余數(shù) → AL 指令執(zhí)行后,將影響 ZF、 SF、 PF,但 AF、 CF、OF無(wú)定義。這時(shí),可使用下面指令: IMUL BL 結(jié)果, AX=F98CH=1652, CF=1, OF=1 ( 3) AAM乘法的 ASCII調(diào)整指令 指令格式: AAM 指令功能:對(duì)已存在 AL中的兩個(gè)非壓縮十進(jìn)制數(shù)相乘的乘積進(jìn)行十進(jìn)制數(shù)的調(diào)整,使得在 AX中得到正確的非壓縮十進(jìn)制數(shù)的乘積,高位放在 AH中,低位放在 AL中。若結(jié)果的高半部分為全零或全 1,表明它僅包含了符號(hào)位,那么使 CF=0, OF=0。 由此可見,如果用 MUL指令作帶符號(hào)數(shù)的乘法,會(huì)得到錯(cuò)誤的結(jié)果,所以必須用下面介紹的 IMUL指令,才能使( 1) ( 1)得到正確的結(jié)果 0000 0000 0000 0001 ( 2) IMUL有符號(hào)數(shù)乘法指令 指令功能細(xì)化: ①若源操作數(shù)為字節(jié)類型,則 AL 源 → AX; ②若源操作數(shù)為字類型,則 AX 源 → ( DX, AX) 指令格式: IMUL 源 指令功能:把源操作數(shù)和累加器中的數(shù)都當(dāng)成是有符號(hào)數(shù),然后將兩數(shù)相乘,源操作數(shù)可以是字節(jié)或字。用二進(jìn)制表示成如下形式: 1111 1111 1 1 1 1 1 1 1 11111 1110 0000 0001若把它們當(dāng)成無(wú)符號(hào)數(shù),相當(dāng)于進(jìn)行255 255=65025的運(yùn)算,結(jié)果正確。 如果要做帶符號(hào)數(shù)的乘法,是否也能使用 MUL指令呢?下面看個(gè)例子。只要執(zhí)行下面這條指令: MUL BL 結(jié)果, AX=06A4H。其它狀態(tài)不定。 指令功能細(xì)化: ①若源操作數(shù)為字節(jié)類型,則 AL 源 → AX; ②若源操作數(shù)為字類型,則 AX 源 → ( DX, AX) 例 356 MUL DL; AL DL→AX MUL CX; AX CX→ ( DX, AX) MUL B[SI]; AL 字節(jié)單元內(nèi)容 → AX MUL W[BX]; AX 字單元內(nèi)容 → ( DX, AX) ★ 其中, B, W分別說明字節(jié)乘法和字乘法 MUL指令執(zhí)行后影響 CF和 OF標(biāo)志,如果結(jié)果的高半部分( AH或 DX)不為零,表明其內(nèi)容上結(jié)果的有效位,則 CF和 OF均置 1。 例 355 設(shè) AL=BCD 56, CL=BCD 98,求兩數(shù)之差。 DAS指令執(zhí)行時(shí),調(diào)整的過程如下: 若 相減后 AL低 4位 9或輔助進(jìn)位 AF=1, 則 AL6→AL , AF置 1,即對(duì)低半字節(jié)進(jìn)行調(diào)整 。調(diào)整過程如下: SUB AL, CL AAS 0000 0011┅BCD 3 0000 1000┅BCD 81111 1011┅低 4位9 0000 0110┅減 6調(diào)整1111 0101∧ 0 0 0 0 1 1 1 1 ┅高4 位清零0000 0101┅結(jié) 果為AL=BCD 5,C F = 1 ,有借位先判斷是否 AL低 4位 9或輔助進(jìn)位 AF=1 由于 AL低 4位 9,則① AL6→AL ② 高 位清 0,低 4位不變 ③ CF置 1, AH1→AH ( 7) DAS減法的十進(jìn)制調(diào)整指令 指令格式: DAS 指令功能:將兩個(gè)壓縮 BCD數(shù)相減后的結(jié)果調(diào)整為正確的壓縮 BCD數(shù)。 例 354 設(shè) AL=BCD 3, CL=BCD 8,求兩數(shù)之差。 AAS指令必須緊跟在 SUB或SBB指令之后。為什么會(huì)出現(xiàn)這種情況呢,原因是 +127(50)=+177,結(jié)果超出了 128~ +127的范圍( 8位),產(chǎn)生了溢出錯(cuò)誤,即這時(shí) OF=1。 ⑴當(dāng) 兩個(gè)同符號(hào)數(shù) 比較時(shí),(即 OF=0為什么?),可以用 SF來判斷這兩個(gè)數(shù)的大小。 0000 0000 0000 01011111 1011( 5) CMP比較指令 指令格式: CMP 目的,源 指令功能 :將目的操作數(shù)減去源操作數(shù),但結(jié)果不送回到目的操作數(shù)中,僅將結(jié)果反映在標(biāo)志位上,接著可用條件轉(zhuǎn)移指令決定程序的流向。我們前面講過,一個(gè)負(fù)數(shù)的補(bǔ)碼 =反碼 +1,指令 NEG的功能就相當(dāng)于反碼 +1;) 例 351 求 5的 8位二進(jìn)制數(shù)表示(即求其補(bǔ)碼) 解:①按照補(bǔ)碼定義求:補(bǔ)碼 =反碼 +1 先求反碼,即求 5的反碼,而 5=0000 0101B,所以 5的反碼 =1111 1010B,所以 5的補(bǔ)碼 =1111 1010+1=1111 1011B,也就是說而把 1111 1011B當(dāng)成是一個(gè) 8位有符號(hào)數(shù),就代表 5。下面看看運(yùn)算過程: 1000 1000┅ BCD 88+ 0100 1001┅ BCD 491101 0001┅ AF=1+ 0000 0110┅ 加6調(diào) 整1101 0111┅ 高半字節(jié)9+ 0110 0000┅ 加60H調(diào) 整0011 0111┅ 結(jié)果為AL=BCD 37, CF=1ADD AL, BL DAA 先判斷是否 AL低 4位 9或輔助進(jìn)位 AF=1 由于 AF=1,所以 AL+6調(diào)整 然后再判斷 AL高 4位結(jié)果 9或 CF=1 由于 AL高 4位 9,所以 AL+60H調(diào)整,同時(shí)使 CF=1,表示有進(jìn)位 ( 1) SUB不帶借位的減法指令 指令格式: SUB 目的,源 指令功能:目的 源 → 目的 ( 2) SBB帶借位的減法指令 指令格式: SBB 目的,源 指令功能:目的 源 CF→ 目的 ★ ① 源操作數(shù):寄存器、存儲(chǔ)器、立即數(shù) 目的操作數(shù):寄存器、存儲(chǔ)器; ②目的與源數(shù)據(jù)類型要一致; ③目的與源不能同時(shí)為存儲(chǔ)器; SUB AL, 18H; AL18H→AL SUB [DI], AL; AL[DS: DI]→DS : DI單元 SBB CL, BL ; CLBLCF→CL SUB AX, BL B [2022H], BYTE PTR[SI] ※ 減法指令影響標(biāo)志位: CF, OF, PF, SF, ZF, AF ( 3) DEC增量指令 指令格式: DEC 目的 指令功能:目的 1→ 目的 注意: 指令執(zhí)行后影響 AF, OF, PF, SF和 ZF, 但不影響 CF。 若 此時(shí) AL中高 4位結(jié)果 9或 CF=1, 則 AL+60H→AL ,即對(duì)高半字節(jié)進(jìn)行調(diào)整,并且使 CF置 1, 否則 CF=0; 例 346 若 AL=BCD 38, BL=BCD 15,求兩數(shù)之和。換句話說, DAA的目的就是將數(shù) CEH調(diào)整為134。相加后的結(jié)果 必須在AL中 ,才能使用 DAA指令。設(shè) AH=0,則運(yùn)算過程如下: MOV AL, ‘ 9’; AL=39H MOV BL, ‘ 5’; BL=35H ADD AL, BL; AL=6EH AAA ;調(diào)整 過程如下 0011 1001┅ ‘9’+ 0011 0101┅ ‘5’0110 1110┅ 低4位 9+ 0000 0110┅ 加6調(diào) 整∧ 0 0 0 0 1 1 1 1 ┅清高4 位0111 01000000 0100┅ AL=4C F = 1 ,A F = 1 ,A H = 1結(jié)果為A X = 0 1 0 4 H ,表示非壓縮十進(jìn)制數(shù)1 4 因此調(diào)整之后, AX=0104H,表示 非壓縮十進(jìn)制數(shù) 14, 若想把 AX中的結(jié)果 ‘ 1’和‘ 4’表示成 ASCII碼,只要在 AAA指令后面加一 條‘或’操作指令 OR AX, 3030H, 便使 AX中的結(jié)果 變成了 ASCII碼 3134H。設(shè) AH=0。 ② 用與操作將 AL高 4位清 0,低 4位不變; ③ AF置 1, CF置 1, AH+1→AH 否則 ,僅將 AL寄存器的高 4位清 0。例如,將 9表示成 0000 1001,而 5表示為0000 0101; 按正常的二進(jìn)制運(yùn)算 : 9+5=0000 1001+0000 0101=0000 1110=0EH,而我們希望的結(jié)果仍然是用非壓縮的十進(jìn)制數(shù)來表示的,即 9+5=0000001+0000 0101=0000 0001 0000 0100( =14)而 AAA指令的目的正是對(duì)這結(jié)果進(jìn)行調(diào)整即將 0EH調(diào)整為 0104H。 INC AL 假設(shè)指令執(zhí)行前 AL=FFH,則指令執(zhí)行后 CF不影響 例 342 INC BL ; BL+1→BL INC AX; AX+1→AX 例 343 INC BYTE PTR[BX]; 內(nèi)存字節(jié)內(nèi)容增 1 INC WORD PTR[BX]; 內(nèi)存字內(nèi)容增 1 ( 4) AAA加法的 ASCII調(diào)整指令 指令格式: AAA 指令功能:在用 ADD或 ADC指令對(duì)兩個(gè)非壓縮十進(jìn)制數(shù)或 ASCII碼表示的十進(jìn)制數(shù)作加法后, 運(yùn)算結(jié)果已存在 AL的情況下, 用此指令將 AL寄存器中的運(yùn)算結(jié)果調(diào)整為 1位非壓縮十進(jìn)制數(shù),仍保留在 AL中,如果 AF=1,表示向高位有進(jìn)位,則進(jìn)位進(jìn)到AH中。 ③當(dāng)進(jìn)行 BCD碼運(yùn)算或需要進(jìn)行奇偶校驗(yàn)時(shí),才考慮 AF或 PF標(biāo)志位。 ★ 上述這些標(biāo)志位我們程序員不是每個(gè)都需要關(guān)心,要分不同情況考慮: ①當(dāng)程序員把上兩數(shù)看成是無(wú)符號(hào)數(shù)相加時(shí),在這里 SF和 OF就沒有什么實(shí)際意義了,只要關(guān)心 CF就可以了。而對(duì)于乘法和除法運(yùn)算,帶符號(hào)數(shù)和無(wú)符號(hào)數(shù)的運(yùn)算過程完成不同,必須分別設(shè)置 無(wú)符號(hào)數(shù)的乘除法指令。絕大部分算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位。 ①無(wú)符號(hào)二進(jìn)制整數(shù): 8 16+9=137 ② 帶符號(hào)二進(jìn)制整數(shù): 119 ③ 無(wú)符號(hào)壓縮十進(jìn)制整數(shù): 89 ④ 無(wú)符號(hào)非壓縮十進(jìn)制整數(shù):無(wú)效 ★算術(shù)運(yùn)算指令處理的數(shù)必須是有效的,否則會(huì)導(dǎo)致錯(cuò)誤的結(jié)果。 例如 0000 1000B代表十進(jìn)制數(shù) 8。 BCD碼:用 4位二進(jìn)制數(shù)來表示一位十進(jìn)制數(shù) 例如 1001 0110B代表十進(jìn)制數(shù) 96。 例如 10010110B的反碼為: 01101001B +1 所以, 10010110B的補(bǔ)碼為: 01101010B ★ 對(duì)于一個(gè)帶符號(hào)的二進(jìn)制整數(shù),當(dāng)其為正數(shù)時(shí),用原碼表示;當(dāng)其為負(fù)數(shù)時(shí),則用其補(bǔ)碼來表示。 二、算術(shù)運(yùn)算指令 算術(shù)運(yùn)算指令可以處理 4種類型的數(shù): ① 無(wú)符號(hào)二進(jìn)制整數(shù) 無(wú)符號(hào)二進(jìn)制數(shù) 00101000B,實(shí)際上代表十進(jìn)制數(shù) 40。 CPAZSTIDO 15 12 11 10 9 8 7 6 5 4 3 2 1 0AHFLAGS SAHF指令功能示意圖 ( 3) PUSHF, 標(biāo)志入棧指令 指令格式: PUSHF 指令功能:把整個(gè)標(biāo)志寄存器的內(nèi)容壓入堆棧,同 時(shí)修改 SP( SP2→SP ) ( 4) POPF, 標(biāo)志出棧指令 指令格式: POPF 指令功能:把當(dāng)前堆棧指針 SP所指的一個(gè)字,傳送 到標(biāo)志寄存器,同時(shí)修改 SP( SP+2→SP ) ★ 成對(duì)使用 PUSHF和 POPF可以用來改變追蹤標(biāo)志位 TF( 8086指令系統(tǒng)中,沒有直接改變 TF的指令) 方法為:可先用 PUSHF指令將標(biāo)志推入堆棧,然后設(shè)法修改當(dāng)前棧頂字內(nèi)容的 D8位,再用 POPF指令把堆棧中修改過的內(nèi)容傳回到標(biāo)志寄存器。 要求: ①源操作數(shù)必須是內(nèi)存單元,從該單元開始的連續(xù) 4個(gè)字節(jié)單元中,存放著一個(gè)變量的地址指針(偏移地址和段地址) ②目的操作數(shù)必須是一個(gè) 16位的寄存器(段寄存器除外),常使用 DI寄存器。 ( 3) LES將雙字指針?biāo)偷郊拇嫫骱?ES指令 指令格式: LES 目的,源 指令功能:從源操作數(shù)指定的存儲(chǔ)單元中,取出一個(gè)變量的 4字節(jié)地址指針,送到一對(duì)目的寄存器。 12450H 46F3900A ┋ ┋數(shù)據(jù)段12452H某變量的偏移地址某變量的段地址F346SI0A90DS例 338 設(shè) DS=1200H,( 12450H) =F346H ( 12452H) =0A90H,則 執(zhí)行指令 LDS SI, [450]后, SI=F346H,DS=0A90H。其中前兩個(gè)字節(jié)(表示變量的偏移地址)送到指令中指定的目的寄存器,后兩個(gè)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1