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

正文內(nèi)容

《匯編語言》講稿_11(文件)

2025-03-12 10:53 上一頁面

下一頁面
 

【正文】 靠 SF就能記錄的,因為它只能記錄實際結(jié)果的正負(fù)。 cmp指令 ? 下面,我們以 cmp ah,bh為例,總結(jié)一下 CPU執(zhí)行 cmp指令后, SF和 OF的值是如何來說明比較的結(jié)果的。 cmp指令 ? ( 3)如果 SF=0,而 OF=1 OF=1 ,說明有溢出,邏輯上真正結(jié)果的正負(fù) ≠實際結(jié)果的正負(fù); 因 SF=0,實際結(jié)果非負(fù),而 OF=1說明有溢出,則結(jié)果非 0 ,所以,實際結(jié)果為正。所以 (ah)≥(bh)。 cmp指令 ? 下面的內(nèi)容中我們將學(xué)習(xí)一些根據(jù)cmp指令的比較結(jié)果(即, cmp指令執(zhí)行后,相關(guān)標(biāo)志位的值)進(jìn)行工作的指令。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 除了 jcxz 之外, CPU還提供了其他條件轉(zhuǎn)移指令,大多數(shù)條件轉(zhuǎn)移指令都檢測標(biāo)志寄存器的相關(guān)標(biāo)志位,根據(jù)檢測的結(jié)果來決定是否修改 IP。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 我們看一下根據(jù)無符號數(shù)的比較結(jié)果進(jìn)行轉(zhuǎn)移的條件轉(zhuǎn)移指令。 ? 比如 je,檢測 ZF位,當(dāng) ZF=1的時候進(jìn)行轉(zhuǎn)移,如果在 je 前面使用了 cmp 指令,那么 je對 ZF的檢測,實際上就是間接地檢測 cmp的比較結(jié)果是否為兩數(shù)相等。從而很好地體現(xiàn)了 je指令的邏輯含義,相等則轉(zhuǎn)移。 je檢測的是 ZF位置,不管 je 前面是什么指令,只要 CPU執(zhí)行 je指令時,ZF=1,那么就會發(fā)生轉(zhuǎn)移。因為此處的je指令檢測到的 ZF=1 ,不是由 cmp等比較指令設(shè)置的,而是由 add指令設(shè)置的,并不具有“兩數(shù)相等”的含義。 ? 但究竟是否配合使用它們,完全是你自己的事情。 所以我們在聯(lián)合應(yīng)用它們的時候,不必再考慮 cmp指令對相關(guān)標(biāo)志位的影響和 je 等指令對相關(guān)標(biāo)志位的檢測。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 我們來看一組程序: data段中的 8個字節(jié)如下: data segment db 8,11,8,1,8,5,63,38 data ends ? ( 1)編程: 統(tǒng)計 data段中數(shù)值為 8的字節(jié)的個數(shù),用 ax保存統(tǒng)計結(jié)果。 ? 根據(jù)有符號數(shù)的比較結(jié)果進(jìn)行轉(zhuǎn)移的條件轉(zhuǎn)移指令的工作原理和無符號的相同,只是檢測了不同的標(biāo)志位。 DF標(biāo)志和串傳送指令 ? flag的第 10位是 DF,方向標(biāo)志位。8086 并不支持這樣的指令,這里只是個描述。8086 并不支持這樣的指令,這里只是個描述。 DF標(biāo)志和串傳送指令 ? 8086CPU提供下而兩條指令對 DF位進(jìn)行設(shè)置: ? cld指令:將標(biāo)志寄存器的 DF位置 0 ? std指令:將標(biāo)志寄存器的 DF位置 1 ? 我們來看兩個程序 ? 編程 1 ? 編程 2 DF標(biāo)志和串傳送指令 ? 編程:用串傳送指令,將 F000H段中的最后 16個字符復(fù)制到 data段中。 程序代碼 DF標(biāo)志和串傳送指令 mov ax,0f000h mov ds,ax mov si,0ffffh 。設(shè)置 DF=1,逆向傳送 rep movsb pushf和 popf ? pushf :將標(biāo)志寄存器的值壓棧; ? popf :從棧中彈出數(shù)據(jù),送入標(biāo)志寄存器中。 ? 在 Debug中,我們可以看到下面的信息: 標(biāo)志寄存器在 Debug中的表示 ? 下面列出 Debug對我們已知的標(biāo)志位的表示: 小結(jié) 演講完畢,謝謝觀看! 。 特別提示 ? 檢測點 ( p223) ? 沒有完成此檢測點,請不要向下進(jìn)行。es:di指向 data:15 mov cx ,16 。 ? 我們可以將 ds:si指向 F000H段的最后一個單元,將 es:di指向 data段中的最后一個單元,然后逆向(即從高地址向低地址)傳送 16個字節(jié)即可。 ? 由于每執(zhí)行一次 movsb指令 si和 di都會遞增或遞減指向后一個單元或前個單元,則 rep movsb就可以循環(huán)實現(xiàn) (cx)個字符的傳送。 ? 當(dāng)然,也可以傳送一個字, movsw指令 DF標(biāo)志和串傳送指令 ? 格式 2: movsw ? 功能:(以字為單位傳送) 將 ds:si指向的內(nèi)存字單元中 word送入 es:di中,然后根據(jù)標(biāo)志寄存器 DF位的值,將 si和 di遞增 2或遞減 2。 ? DF = 0:每次操作后 si, di遞增; ? DF = 1:每次操作后 si, di遞減。 ? 對這些指令感興趣的學(xué)習(xí)者可以查看相關(guān)的指令手冊。 ? ( 3)編程: 統(tǒng)計 data段中數(shù)值小于 8的字節(jié)的個數(shù),用 ax保存統(tǒng)計結(jié)果。 ? 我們可以直接考慮 cmp和 je等指令配合使用時,表現(xiàn)出來的邏輯含義。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 對于 jne、 jb、 jnb、 ja、 jna等指令和 cmp指令配合使用的思想和 je相同,可以自己分析一下。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? CPU提供了 cmp指令,也提供了 je 等條件轉(zhuǎn)移指令,如果將它們配合使用,可以實現(xiàn)根據(jù)比較結(jié)果進(jìn)行轉(zhuǎn)移的功能。 add ax,0使得 ZF=1,所以 je指令將進(jìn)行轉(zhuǎn)移。 ? “相等則轉(zhuǎn)移”這種邏輯含義,是通過和 cmp 指令配合使用來體現(xiàn)的,因為是 cmp 指令為“ ZF=1”賦予了“兩數(shù)相等”的含義。 cmp ah,bh je s add ah,bh jmp short ok s: add ah,ah ok: ret 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 上面的程序執(zhí)行時,如果 (ah)=(bh) ,則 cmp ah,bh使 ZF=1,而 je檢測 ZF是否為 1,如果為 1,將轉(zhuǎn)移到標(biāo)號 s 處執(zhí)行指令 add ah,ah。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 這些指令比較常用,它們都很好記憶,它們的第一個字母都是 j,表示 jump;后面的: ? e:表示 equal; ? ne:表示 not equal; ? b:表示 below; ? nb:表示 not below; ? a:表示 above; ? na:表示 not above。 ? 這些條件轉(zhuǎn)移指令通常都和 cmp相配合使用,就好像 call 和 ret 指令通常相配合使用一樣。 ? 比如: jcxz就是一個條件轉(zhuǎn)移指令,它可以檢測 cx 中的數(shù)值,如果 (cx)=0,就修改 IP,否則什么也不做。 ? 在學(xué)習(xí)中,要注意領(lǐng)會 8086CPU這種工作機(jī)制的設(shè)計思想。這樣, SF=0,OF = 1 ,說明了 (ah)(bh)。 cmp指令 ? ( 2)如果 SF=1,而 OF=1 OF=1 ,說明有溢出,邏輯上真正結(jié)果的正負(fù) ≠實際結(jié)果的正負(fù); 因 SF=1 ,實際結(jié)果為負(fù),實際結(jié)果為負(fù),而又有溢出,這說明是由于溢出導(dǎo)致了實際結(jié)果為負(fù), 簡單分析一下,就可以看出,如果因為溢出導(dǎo)致了實際結(jié)果為負(fù),那么邏輯上真正的結(jié)果必然為正。 cmp指令 ? 如果沒有溢出發(fā)生的話,那么,實際結(jié)果的正負(fù)和邏輯上真正結(jié)果的正負(fù)就一致了。 cmp指令 ? 又比如: mov ah,0A0H mov bh,0CBH cmp ah,bh 結(jié)果 SF=1,運(yùn)算 (ah)(bh) 實際得到的結(jié)果是 D5H,但是在邏輯上,運(yùn)算所應(yīng)該得到的結(jié)果是: 160(53)=213。 cmp指令 ? 比如: mov ah,22H mov bh,0A0H sub ah,bh 結(jié)果 SF=1,運(yùn)算實際得到的結(jié)果是(ah)=82H,但是在邏輯上,運(yùn)算所應(yīng)該得到的結(jié)果是: 34(96)=130。 cmp指令 ? cmp ah,bh執(zhí)行后, SF記錄的是 (ah) (bh)所得到的 8位結(jié)果數(shù)據(jù)的正負(fù); ? 雖然這個結(jié)果沒有在我們能夠使用的寄存器或內(nèi)存單元中保存,但是在指令執(zhí)行的過程中,它暫存在 CPU 內(nèi)部的暫存器中。 cmp指令 ? 我們可以根據(jù)指令執(zhí)行后,相關(guān)標(biāo)志位的值來判斷比較的結(jié)果。 cmp指令 ? (ah)=22H, (bh)=0A0H: 則 (ah)(bh)
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1