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

正文內容

匯編語言講稿_11(更新版)

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

下一頁面
  

【正文】 b ah,bh 結果 SF=1,運算實際得到的結果是(ah)=82H,但是在邏輯上,運算所應該得到的結果是: 34(96)=130。 cmp指令 ? 我們可以根據(jù)指令執(zhí)行后,相關標志位的值來判斷比較的結果。 cmp指令 ? 比如: ? (ah)=1, (bh)=2: 則 (ah)(bh)=0FFH, 0FFH 為 1 的補碼,因為結果為負,所以 SF=1。 cmp指令 ? 其實,我們通過 cmp 指令執(zhí)行后,相關標志位的值就可以看出比較的結果。 ? 通過學習這兩條指令,我們可以進一步領會一下標志寄存器 CF位的作用和意義。 adc指令 ? 程序代碼 mov ax,001EH mov bx,0F000H mov cx,1000H add cx,1EF0H adc bx,1000H adc ax,0020H adc指令 ? 下面我們,編寫一個子程序,對兩個128位數(shù)據(jù)進行相加。 ? adc指令和 add指令相配合就可以對更大的數(shù)據(jù)進行加法運算。 adc指令 ? adc指令示例(三) ? mov al,98H add al,al adc al,3 執(zhí)行后, (ax)=34H。 ? 對于無符號運算, 0F0H+78H有進位,CF=1; ? 對于有符號數(shù)運算, 0F0H +78H不發(fā)生溢出, OF=0。 OF標志 ? 一定要注意 CF和 OF的區(qū)別: CF是對無符號數(shù)運算有意義的標志位; 而 OF是對有符號數(shù)運算有意義的標志位。88H,為有符號數(shù) 120的補碼 add指令運算的結果是 (al)=78H, 因為進行的是有符號數(shù)運算,所以 al中存儲的是有符號數(shù),而 78H表示有符號數(shù) 120。88H,為有符號數(shù) 120的補碼 執(zhí)行后將產生溢出。 同理,對于 16 位有符號數(shù),機器所能表示的范圍是 32768~32767。 CF標志 ? 比如,下面的指令: mov al,98H add al,al 。 ? 8086CPU 就用 flag的 CF位來記錄這個進位值。 特別提示 ? 檢測點 ( p205) ? 沒有完成此檢測點,請不要向下進行。 SF標志 ? SF 標志,就是 CPU對有符號數(shù)運算結果的一種記錄 ,它記錄數(shù)據(jù)的正負。 ZF標志 ? 注意: 我們在使用一條指令的時候,要注意這條指令的全部功能,其中包括,執(zhí)行結果對標記寄存器的哪些標志位造成影響。 mov ax,2 sub ax,1 指令執(zhí)行后,結果為 1,則 ZF = 0。 ? 本章中的標志寄存器(以下簡稱為 flag)是我們要學習的最后一個寄存器。 引言 ? 8086CPU的 flag寄存器的結構: ? flag的 1 1 1 15位在8086CPU中沒有使用,不具有任何含義。如果結果不為 0,則 ZF要記錄下“不是 0”這樣的否定信息。 ? 示例 PF標志 ? 示例 ? 指令: mov al,1 add al,10 執(zhí)行后,結果為 00001011B,其中有 3(奇數(shù))個 1,則 PF=0; ? 指令: mov al,1 or al,10 執(zhí)行后,結果為 00000011B,其中有 2(偶數(shù))個 1,則 PF=1; SF標志 ? flag的第 7位是 SF,符號標志位。 SF標志 ? 這也就是說, CPU在執(zhí)行 add 等指令時,是必然要影響到 SF標志位的值的。 CF標志 ? 對于位數(shù)為 N的無符號數(shù)來說,其對應的二進制信息的最高位,即第 N1位,的最高有效位,而假想存在的第 N位,就是相對于最高有效位的更高位。CF記錄了最高有效位向更高位的進位值 add al,al 。執(zhí)行后 : (al)=30H, CF=1, 。 ? 下面我們看兩個溢出的例子。 ? 就上面的兩個例子來說: mov al,98 add al,99 add指令運算的結果是 (al)=0C5H ,因為進行的是有符號數(shù)運算,所以 al中存儲的是有符號數(shù),而 0C5H是有符號數(shù) 59的補碼。 OF標志 ? 由于在進行有符號數(shù)運算時,可能發(fā)生溢出而造成結果的錯誤。 OF標志 ? 對于無符號數(shù)運算, CPU用 CF位來記錄是否產生了進位; ? 對于有符號數(shù)運算, CPU 用 OF 位來記錄是否產生了溢出, 當然,還要用 SF位來記錄結果的符號。 adc指令 ? adc是帶進位加法指令 ,它利用了 CF位上記錄的進位值。 為什么要加上 CF的值呢? CPU為什么要提供這樣一條指令呢? ? 我們先來看一下 CF的值的含義。我們將計算分兩步進行,先將低 16位相加,然后將高 16 位和進位值相加。 ? ds:di指向存儲第二個數(shù)的內存空間 ? 程序代碼 思考 adc指令 ? 思考: inc和 loop指令不影響 CF位,上面的程序中,能不能將 4個 inc指令,用: add si,2 add si,2 取代? sbb指令 ? sbb是帶錯位減法指令,它利用了 CF位上記錄的借位值。 其他相關指令通過識別這些被影響的標志寄存器位來得知比較結果。 ? 所以利用 cmp指令可以對無符號數(shù)進行比較,也可以對有符號數(shù)進行比較。 我們再看兩個例子。 比如 add ah, al執(zhí)行后, SF記錄的是 ah中的 8位二進制信息所表示的數(shù)據(jù)的正負。 但 SF=1不能說明在邏輯上運算所得的正確結果的正負。 cmp指令 ? ( 1)如果 SF=1,而 OF=0 OF=0,說明沒有溢出,邏輯上真正結果的正負 =實際結果的正負; 因 SF=1,實際結果為負,所以邏輯上真正的結果為負,所以 (ah)(bh)。 cmp指令 ? 上面,我們深入討論了 cmp指令在進行有符號數(shù)和無符號數(shù)比較時,對 flag 相關標志位的影響,和 CPU如何通過相關的標志位來表示比較的結果。 檢測比較結果的條件轉移指令 ? 它們檢測的是哪些標志位呢? 就是被 cmp指令影響的那些,表示比較結果的標志位。 檢測比較結果的條件轉移指令 ? 編程實現(xiàn)如下功能: 如果 (ah)=(bh)則 (ah)=(ah)+(ah),否則(ah)=(ah)+(bh)。 ? 比如 檢測比較結果的條件轉移指令 ? 比如: mov ax,0 add ax,0 je s inc ax s: inc ax 執(zhí)行后, (ax)=1。 這就好像, call和 ret指令的關系一樣。 ? ( 2)編程: 統(tǒng)計 data段中數(shù)值大于 8的字節(jié)的個數(shù),用 ax保存統(tǒng)計結果。 ? 在串處理指令中,控制每次操作后si, di的增減。 ? 如果 DF=0: add si,2 add di,2 ? 如果 DF=1: sub si,2 sub di,2 DF標志和串傳送指令 ? movsb和 movsw進行的是串傳送操作中的一個步驟,一般來說, movsb 和 movsw 都和rep配合使用,格式如下: ? rep movsb 用匯編語法來描述 rep movsb的功能就是: s : movsb loop s ? rep movsw 用匯編語法來描述 rep movsw的功能就是: s : movsw loop s DF標志和串傳送指令 ? 可見, rep的作用是根據(jù) cx的值,重復執(zhí)行后面的串傳送指令。ds:si指向 f000:ffff mov ax,data mov es,ax mov di,15
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1