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

正文內(nèi)容

匯編語言講稿_11(完整版)

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

下一頁面
  

【正文】 ZF標志 ? 示例 指令: mov ax,1 and ax,0 執(zhí)行后,結(jié)果為 0,則 ZF=1,表示“結(jié)果是 0”。 引言 ? 在這一章中,我們學習標志寄存器中的CF、 PF、 ZF、 SF、 OF、 DF 標志位,和一些與其相關的典型指令?!秴R編語言》課件 王爽 著-清華大學出版社 制作工具: Microsoft PowerPoint2023 第 11章 標志寄存器 ? ZF標志 ? PF標志 ? SF標志 ? CF標志 ? OF標志 ? adc指令 ? sbb指令 ? cmp指令 ? 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? DF標志和串傳送指令 ? pushf和 popf ? 標志寄存器在 Debug中的表示 引言 ? 8086CPU的標志寄存器有 16位,其中存儲的信息通常被稱為程序狀態(tài)字( PSW)。 ZF標志 ? flag的第 6位是 ZF,零標志位。 指令: mov ax,1 or ax,0 執(zhí)行后,結(jié)果不為 0,則 ZF=0,表示“結(jié)果非 0”。 SF標志 ? 不管我們?nèi)绾慰创?CPU 在執(zhí)行 add等指令的時候,就已經(jīng)包含了兩種含義,也將得到用同一種信息來記錄的兩種結(jié)果。 SF標志 ? 某此指令將影響標志寄存器中的多個標志位,這些被影響的標記位比較全面地記錄了指令的執(zhí)行結(jié)果,為相關的處理提供了所需的依據(jù)。 由于這個進位值在 8位數(shù)中無法保存,我們在前面的課程中,就只是簡單地說這個進位值丟失了。 ? 比如,兩個 8 位數(shù)據(jù): 97H98H,將產(chǎn)生借位,借位后,相當于計算 197H98H。 ? 那么,什么是機器所能表示的范圍呢? OF標志 ? 比如說,指令運算的結(jié)果用 8 位寄存器或內(nèi)存單元來存放。 OF標志 ? 示例指令: mov al,0F0H 。 OF標志 ? 同樣,對于: mov al,0F0H 。 OF標志 ? 一般情況下, OF記錄了有符號數(shù)運算的結(jié)果是否發(fā)生了溢出。 ? 對于無符號數(shù)運算, 0F0H+88H有進位, CF=1; ? 對于有符號數(shù)運算, 0F0H+88H發(fā)生溢出, OF=1。 adc指令 ? adc指令示例(二) ? mov ax,1 add ax,ax adc ax,3 執(zhí)行后, (ax)=5。 adc指令 ? 我們來看一下兩個數(shù)據(jù): 0198H和 0183H如何相加的: 01 98 + 01 83 1 03 1B 可以看出,加法可以分兩步來進行: ? ( 1)低位相加; ? ( 2)高位相加再加上低位相加產(chǎn)生的進位值。 ? 看一個例子 adc指令 ? 編程計算 1EF0001000H+2023001EF0H,結(jié)果放在 ax(高 16位), bx(次高 16位),cx(低 16位)中。 sbb指令 ? 比如,計算 003E100OH–00202323H,結(jié)果放在 ax, bx中,程序如下: mov bx,1000H mov ax,003EH sub bx,2023H sub ax,0020H sbb指令 ? sbb和 adc是基于同樣的思想設計的兩條指令,在應用思路上和 adc類似。 指令執(zhí)行后: ZF=1, PF=1, SF=0, CF=0, OF=0。 cmp指令 ? 我們以 cmp ah,bh為例進行說明: cmp ah,bh 如果 (ah)=(bh) 則 (ah)(bh)=0,所以:ZF=1; 如果 (ah)≠(bh) 則 (ah)(bh) ≠0,所以: ZF=0; 所以,我們根據(jù) cmp指令執(zhí)行后 ZF的值,就可以知道兩個數(shù)據(jù)是否相等。 cmp指令 ? 兩個有符號數(shù) A 和 B 相減,得到的是負數(shù),那么可以肯定 AB,這個思路沒有錯誤; ? 關鍵在于我們根據(jù)什么來斷定得到的是一個負數(shù)。 這是因為在運算的過程中可能發(fā)生溢出。 ? 所以 cmp 指令所作的比較結(jié)果,不是僅僅靠 SF就能記錄的,因為它只能記錄實際結(jié)果的正負。 cmp指令 ? ( 3)如果 SF=0,而 OF=1 OF=1 ,說明有溢出,邏輯上真正結(jié)果的正負 ≠實際結(jié)果的正負; 因 SF=0,實際結(jié)果非負,而 OF=1說明有溢出,則結(jié)果非 0 ,所以,實際結(jié)果為正。 cmp指令 ? 下面的內(nèi)容中我們將學習一些根據(jù)cmp指令的比較結(jié)果(即, cmp指令執(zhí)行后,相關標志位的值)進行工作的指令。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 我們看一下根據(jù)無符號數(shù)的比較結(jié)果進行轉(zhuǎn)移的條件轉(zhuǎn)移指令。從而很好地體現(xiàn)了 je指令的邏輯含義,相等則轉(zhuǎn)移。因為此處的je指令檢測到的 ZF=1 ,不是由 cmp等比較指令設置的,而是由 add指令設置的,并不具有“兩數(shù)相等”的含義。 所以我們在聯(lián)合應用它們的時候,不必再考慮 cmp指令對相關標志位的影響和 je 等指令對相關標志位的檢測。 ? 根據(jù)有符號數(shù)的比較結(jié)果進行轉(zhuǎn)移的條件轉(zhuǎn)移指令的工作原理和無符號的相同,只是檢測了不同的標志位。8086 并不支持這樣的指令,這里只是個描述。 DF標志和串傳送指令 ? 8086CPU提供下而兩條指令對 DF位進行設置: ? cld指令:將標志寄存器的 DF位置 0 ? std指令:將標志寄存器的 DF位置 1 ? 我們來看兩個程序 ? 編程 1 ? 編程 2 DF標志和串傳送指令 ? 編程:用串傳送指令,將 F000H段中的最后 16個字符復制到 data段中。設置 DF=1,逆向傳送 rep movsb pushf和 popf ? pushf :將標志寄存器的值壓棧; ? popf :從棧中彈出數(shù)據(jù),送入標志寄存器中。 特別提示 ? 檢測點 ( p223) ? 沒有完成此檢測點,請不要向下進行。 ? 我們可以將 ds:si指向 F000H段的最后一個單元,將 es:di指向 data段中的最后一個單元,然后逆向(即從高地址向低地址)傳送 16個字節(jié)即可。 ? 當然,也可以傳送一個字, movsw指令 DF標志和串傳送指令 ? 格式 2: movsw ? 功能:(以字為單位傳送) 將 ds:si指向的內(nèi)存字單元中 word送入 es:di中,然后根據(jù)標志寄存器 DF位的值,將 si和 di遞增 2或遞減 2。 ? 對這些指令感興趣的學習者可以查看相關的指令手冊。 ? 我們可以直接考慮 cmp和 je等指令配合使用時,表現(xiàn)出來的邏輯含義。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? CPU提供了 cmp指令,也提供了 je 等條件轉(zhuǎn)移指令,如果將它們配合使用,可以實現(xiàn)根據(jù)比較結(jié)果進行轉(zhuǎn)移的功能。 ? “相等則轉(zhuǎn)移”這種邏輯含義,是通過和 cmp 指令配合使用來體現(xiàn)的,因為是 cmp 指令為“ ZF=1”賦予了“兩數(shù)相等”的含義。 檢測比較結(jié)果的條件轉(zhuǎn)移指令 ? 這些指令比較常用,它們都很好記憶,它們的第一個字母都是 j,表示 jump;后面的: ? e:表示 equal; ? ne:表示 not equal; ? b:表示 below; ? nb:表示 not below; ? a:表示 above; ? na:表示 not above。 ? 比如: jcxz就是一個條件轉(zhuǎn)移指令,它可以檢測 cx 中的數(shù)值,如果 (cx)=0,就修改 IP,否則什么也不做。這樣, SF=0,OF = 1 ,說明了 (ah)(bh)。 cmp指令 ? 如果沒有溢出發(fā)生的話,那么,實際結(jié)果的正負和邏輯上真正結(jié)果的正負就一致了。 cmp指令 ? 比如: mov ah,22H mov bh,0A0H su
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1