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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五、CPU详解、寄存器详解、标志寄存器详解

發(fā)布時(shí)間:2025/3/15 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五、CPU详解、寄存器详解、标志寄存器详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

控制器、運(yùn)算器、寄存器組成CPU

?

控制器:領(lǐng)導(dǎo)

運(yùn)算器:員工,計(jì)算數(shù)據(jù)

寄存器:寄存數(shù)據(jù)信息,在內(nèi)存與運(yùn)算器之間

硬盤運(yùn)算速度<內(nèi)存運(yùn)算速度<寄存器運(yùn)算速度

寄存器:(寄存器16位[寄存器高8與低8],內(nèi)存8位)

?

1. 通用寄存器(16位):AX、BX(基址寄存器)、CX、DX

例如:往寄存器BX放入16進(jìn)制數(shù)AF1E(16位二進(jìn)制)

入:r bx 出:bx 0000 入:AF1E r 查看最后信息 //AF為高8,1E為低8

AX分為AH和AL

BX分為BH和BL

CX分為CH和CL

DX分為DH和DL

?

2. 變址寄存器 si, di(16位,不分高低位,si:源變值寄存器,di:目的變值寄存器)

實(shí)例:

assume cs:code,ds:data data segmentdata endscode segment start:mov si,0001Hmov di,0002Hmov ax,4c00Hint 21H code ends end start

?

3. 基址寄存器 bx,bp(ss棧基址寄存器)

使用寄存器bp,段地址默認(rèn)為SS。

?

4. 標(biāo)志寄存器

在計(jì)算機(jī)中,有一個(gè)專用16位的寄存器FLAGS(又稱:標(biāo)志寄存器)。
標(biāo)志寄存器是按位起作用的,每一位都有專門的含義,記錄特定的信息。

FLAGS寄存器結(jié)構(gòu):
0?? ?CF進(jìn)位(是/否)?? ??? ?CY?? ?NC
1
2?? ?PF奇偶(偶/奇)?? ??? ?PE?? ?PO
3
4?? ?AF輔助進(jìn)位(是/否)?? ?AC?? ?NA
5
6?? ?ZF零(是/否)? ? ? ? ? ? ? ZR?? ?NZ
7?? ?SF符號(hào)(負(fù)/正)? ? ? ? ??NG?? ?PL
8?? ?TF
9?? ?IF中斷(允許/關(guān)閉)? ? ? ? EI?? ?DI
10?? ?DF方向(減量/增量)?? ?DN?? ?UP
11?? ?OF溢出(是/否)? ? ? ? ? ?OV?? ?NV
12
13
14
15

標(biāo)志寄存器標(biāo)志位的作用:
a 存儲(chǔ)相關(guān)指令的某些執(zhí)行結(jié)果(理解:自動(dòng)賦值)
b 為CPU執(zhí)行相關(guān)指令提供行為依據(jù)(判斷某位上的值而決定執(zhí)行哪條匯編指令)
c 控制CPU的相關(guān)工作方式(控制工作方式,比如從左向右還是從右向左)

ZF 標(biāo)志寄存器(0標(biāo)志位)

? ? ZF位于標(biāo)志寄存器的第六位,是零標(biāo)志寄存器。
?? ?它負(fù)責(zé)記錄相關(guān)指令執(zhí)行后,其結(jié)果是否為0。如果結(jié)果為0,那么ZF值為1;如果結(jié)果不為0,那么ZF值為0。

?? ?注意:在計(jì)算機(jī)指令中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,有的則不影響。

?? ?ADD
?? ?SUB
?? ?INC
?? ?DEC
?? ?MUL
?? ?DIV

? ? mov則屬于不影響標(biāo)志位的。

assume cs:code,ds:data,ss:stack data segmentdw 256 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov ax,12Hsub ax,11H ;ZF標(biāo)志位不為0,結(jié)果為NZsub ax,1H ;ZF標(biāo)志位為1,結(jié)果為ZRmov bx,2Hdec bx ;ZF標(biāo)志位不為0,結(jié)果為NZdec bx ;ZF標(biāo)志位為1,結(jié)果為ZRdec bx ;ZF標(biāo)志位不為0,結(jié)果為NZmov ax,4c00Hint 21H code ends end start

PF 標(biāo)志寄存器

? ? PF位于標(biāo)志寄存器的第二位,是奇偶標(biāo)志位。

?? ?它負(fù)責(zé)記錄相關(guān)指令執(zhí)行后,其結(jié)果低8位中1的個(gè)數(shù)是否為偶數(shù)。如果1的個(gè)數(shù)為偶數(shù),PF值為1;如果為奇數(shù),PF值為0。

?? ?注意:在計(jì)算機(jī)指令中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,有的則不影響。

assume cs:code,ds:data,ss:stack data segmentdw 256 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov bl,1H ;PO 奇數(shù)add bl,1H ;PO 奇數(shù)add bl,1H ;PE 偶數(shù)mov ax,4c00Hint 21H code ends end start

SF 標(biāo)志寄存器

? ? SF位于標(biāo)志寄存器的第七位,是符號(hào)標(biāo)志位。

?? ?它記錄相關(guān)指令執(zhí)行后,其結(jié)果是否為負(fù)。如果結(jié)果為負(fù),SF值為1;如果結(jié)果非負(fù),SF值為0。

?? ?注意:
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,有的則不影響。
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行將影響多個(gè)標(biāo)志寄存器位。

assume cs:code,ds:data,ss:stack data segmentdw 256 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov al,10000001B ;無符號(hào),值為PLadd al,00000001B ;有符號(hào)數(shù),最高為負(fù)數(shù)符號(hào),值為NGmov al,00000001B ;無符號(hào),值為PL(要脫離上面的數(shù)據(jù))add al,00000001B ;有符號(hào)數(shù),最高為正數(shù)符號(hào),值為PLmov ax,4c00Hint 21H code ends end start

CF 標(biāo)志寄存器(必須為無符號(hào)數(shù):是否有進(jìn)位,就是相加有進(jìn)位;或者借位,就是相減從最高位借位)

? ? CF位于標(biāo)志寄存器的第零位,是進(jìn)位標(biāo)志位。

?? ?它記錄相關(guān)指令執(zhí)行后,其運(yùn)算結(jié)果的最高有效位向更高位的進(jìn)位值,或從更高位的借位值。

?? ?注意:
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,有的則不影響。
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行將影響多個(gè)標(biāo)志寄存器位。

assume cs:code,ds:data,ss:stack data segmentdw 256 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov bl,00000000Badd bl,10000001B ;不會(huì)有進(jìn)位,值為NCadd bl,10000000B ;有進(jìn)位,值為CYmov bl,00000001Bsub bl,00000001B ;不會(huì)有借位,值為NCsub bl,00000001B ;有借位,值為CYmov ax,4c00Hint 21H code ends end start

OF 標(biāo)志寄存器(必須為有符號(hào)數(shù),超出取值范圍

? ? OF位于標(biāo)志寄存器的第十一位,是溢出標(biāo)志位。

?? ?它記錄對(duì)有符號(hào)數(shù)運(yùn)算的結(jié)果是否發(fā)生了溢出。如果發(fā)生溢出,OF的值為1;如果沒有發(fā)生溢出,OF的值為0。
?? ?
?? ?8位有符號(hào)數(shù)表示范圍為-128 ~ +127
?? ?0 ?? ?00000000
?? ?-128?? ?10000000

?? ?8位無符號(hào)數(shù)表示范圍為0 ~ 255
?? ?
?? ?注意:
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,有的則不影響。
?? ?在計(jì)算機(jī)指令中,有的指令的執(zhí)行將影響多個(gè)標(biāo)志寄存器位。

assume cs:code,ds:data,ss:stack data segmentdw 256 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov bl,01111000B add bl,00010100B ;有符號(hào)數(shù),有進(jìn)位,有溢出,值為OVmov bl,10001000B ; -120 減 -20sub bl,11101100B ;有符號(hào)數(shù),等于-140,超出-128取值范圍,有溢出,值為OVmov ax,4c00Hint 21H code ends end start

DF 標(biāo)志寄存器(賦值粘貼功能

? ? DF位于標(biāo)志寄存器的第十位,是方向標(biāo)志位。

?? ?在串處理指令中,它控制每次操作后si、di的增減變化。

?? ?當(dāng)DF=0時(shí),每次操作后si、di遞增。
?? ?當(dāng)DF=1時(shí),每次操作后si、di遞減。

?? ?CLD指令:將標(biāo)志寄存器的DF位置0。
?? ?STD指令:將標(biāo)志寄存器的DF位置1。

?? ?movsb指令:串傳送指令
?? ?功能:將ds:si指向的內(nèi)存單元中的字節(jié)傳送入es:di指向的內(nèi)存單元,然后根據(jù)DF標(biāo)志位的值,將si、di遞增或遞減。

? ? movsw指令
?? ?功能:將ds:si指向的內(nèi)存單元中的字傳送入es:di指向的內(nèi)存單元,然后根據(jù)DF標(biāo)志位的值,將si、di遞增2或遞減2。

;從前向后依次復(fù)制粘貼,遞增 assume cs:code,ds:data,ss:stack data segmentdb 'china os'db 8 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov ax,datamov ds,axmov si,0Hmov es,axmov di,8Hcld ;設(shè)置DF值為0movsb ;依次將ds寄存器數(shù)據(jù)偏移賦值到8-16,標(biāo)志位遞增,0賦值8movsb ;1賦值9movsb ;2賦值A(chǔ)movsbmovsbmovsbmovsbmovsbmov ax,4c00Hint 21H code ends end start ;從后向前依次復(fù)制粘貼,遞減 assume cs:code,ds:data,ss:stack data segmentdb 'china os'db 8 dup (0H) data endsstack segmentdw 256 dup (0H) stack endscode segment start:mov ax,datamov ds,axmov si,7Hmov es,axmov di,FHstd ;設(shè)置DF值為1movsb ;依次將ds寄存器數(shù)據(jù)偏移賦值到16-8,標(biāo)志位遞減,7賦值Fmovsb ;6賦值Emovsb ;5賦值Dmovsbmovsbmovsbmovsbmovsbmov ax,4c00Hint 21H code ends end start

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的五、CPU详解、寄存器详解、标志寄存器详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。