日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8086汇编复习3 - 标志寄存器 - 使用emu8086

發布時間:2025/4/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8086汇编复习3 - 标志寄存器 - 使用emu8086 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 認識標志寄存器

?

標志寄存器
? ? CPU內部有一種寄存器,具有三種作用:
? ? 1)存儲相關指令的某些執行結果;
? ? 2)用來為CPU執行相關指令提供行為依據;
? ? 3) 用來控制CPU的相關工作方式;
? ? 這種寄存器在8086中稱為標志寄存器;標志寄存器簡稱flag;
? ? 8086標志寄存器有16位,其中存儲的信息稱為程序狀態字(PSW);
? ? flag是按位起作用;
? ? flag的1、3、5、12、13、14、15位在8086CPU中沒有使用;

進入emu8086;
按emulate按鈕,彈出emulator窗口;
按flags按鈕,彈出flags窗口,即標志寄存器;各位初始值如圖;
按analyse按鈕,彈出 lexical flag analyser窗口;表示出flags當前各位的值所表示的意義;
? ? 例如ZF是零標志位;

?

2 零標志,奇偶標志

?

ZF標志
? ? 零標志位;flag第6位;
? ? 記錄相關指令執行后,結果是否為0;
? ? 結果為0,zf=1;否則,zf=0;
?
mov ax,1
sub ?ax,1
執行后結果為0;zf=1;

mov ax,1
and ax, 0
執行后,結果為0,zf=1;

有的指令是影響標志寄存器的,大都是運算指令;
有的指令不影響標志寄存器,大都是傳送指令;

PF標志
? ? flag第二位;奇偶標志位;
? ? 記錄指令執行后,結果的所有bit位中1的個數是否為偶數;
? ? 1的個數為偶數,pf=1;否則=0;

mov al, 1
add al, 10
執行后,結果為00001011B,3個1,則pf=0;

mov al, 1
or al, 2
執行后,結果為00000011B,2個1,pf=1;

?

?

3 符號標志

?

SF標志
? ? flag的第7位;符號標志;
? ? 記錄指令執行后,結果是否為負;如果為負,sf=1;否則=0;
? ? 計算機中通常用補碼表示有符號數據;
? ? 計算機中的一個數據可以看作有符號數,也可以看作無符號數;對于同一個二進制數據,計算機可以將它當作無符號數據來運算,也可以當作有符號數據來運算;
? ? CPU在執行add等指令的時候,就已經包含了兩種含義,也將得到用同一種信息來記錄的兩種結果;
? ? SF標志,就是CPU對有符號數運算結果的一種記錄,它記錄數據的正負;

mov al, 10000001B
add al, 1
? ? 執行后,結果為 10000010B,sf=1,表示:如果指令進行的是有符號數運算,那么結果為負;

mov al, 10000001B
add al, 01111111B
? ? 執行后,結果為0,sf=0;表示:如果指令進行的是有符號數運算,那么結果為非負;

? ? 某些指令影響flag的多個標記位;
? ? 指令sub al, al執行后,ZF、PF、SF受影響,分別為:1,1,0;

?

4 進位標志

?

CF標志
? ? flag第0位;進位標志;
? ? 一般情況下,在進行無符號數運算的時候,它記錄了運算結果的最高有效位向更高位的進位值,或從更高位的借位值;
? ? 兩個8位數據:98H+98H;將產生進位;進位在8位數中無法保存;CPU把進位記錄在CF;

mov al, 98H
add al, al ?; ?執行后,al內容為30H,CF=1;
add al, al ?; 執行后,al內容為60H, CF=0;

? ? 兩個數據做減法,可能向更高位借位;
? ? 97H-98H,將產生借位,借位后,相當于計算197H-98H;CF也可以記錄這個借位;

mov al, 97H
sub al, 98H ?; ?執行后,al內容為FFH,CF=1,CF記錄了向更高位的借位;
sub al, al ; ? ? 執行后,al內容為0,CF=0;

?

5 溢出標志

?

OF標志
? ? 在進行有符號數運算時,如結果超過了機器所能表示的范圍稱為溢出;
? ? 8位有符號數,機器所能表示的范圍是-128 - 127;16位有符號數,機器所能表示的范圍是-32768-32767;
? ??
mov al, 98
add al, 99
? ? 執行后將產生溢出;98+99=197;

mov al, 0F0H;F0H,有符號數-16的補碼;
add al, 088H ; ?88H,有符號數-120的補碼;
? ? 執行后將產生溢出;(-16) + (-120) = -136;

如果在進行有符號數運算時發生溢出,那么運算的結果將不正確;

flag的第11位是OF,溢出標志;發生溢出,OF=1;否則OF=0;

CF和OF的區別:
? ? CF是對無符號數運算有意義,OF是對有符號數運算有意義;

總結

以上是生活随笔為你收集整理的8086汇编复习3 - 标志寄存器 - 使用emu8086的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。