日本有码中文字幕视频,在线能看三级网站,日本妇乱子伦视频免费的,中文字幕一页在线

      標(biāo)志寄存器和程序狀態(tài)寄存器(標(biāo)志寄存器)

      時(shí)間:2022-09-09 07:33:07來源:
      導(dǎo)讀摘要很多朋友對(duì)標(biāo)志寄存器和程序狀態(tài)寄存器,標(biāo)志寄存器還不了解,今天小綠就為大家解答一下。二進(jìn)制(201)寄存器(1529)首先標(biāo)志寄存器的概...

      摘要很多朋友對(duì)標(biāo)志寄存器和程序狀態(tài)寄存器,標(biāo)志寄存器還不了解,今天小綠就為大家解答一下。二進(jìn)制(201)寄存器(1529)首先標(biāo)志寄存器的概念。...

      很多朋友對(duì)標(biāo)志寄存器和程序狀態(tài)寄存器,標(biāo)志寄存器還不了解,今天小綠就為大家解答一下。

      二進(jìn)制(201)寄存器(1529)首先標(biāo)志寄存器的概念。在8086cpu中標(biāo)志寄存器都是16位,其中存儲(chǔ)的信息稱為程序狀態(tài)字(包含系統(tǒng)狀態(tài)的一段內(nèi)存或硬件區(qū)域)。標(biāo)志寄存器既然是寄存器,也是用來存儲(chǔ)信息的,但是存儲(chǔ)信息的方式和其他寄存器不一樣。其他寄存器是一個(gè)寄存器包含一個(gè)報(bào)文,而標(biāo)志寄存器可以包含多個(gè)報(bào)文。并且標(biāo)志寄存器由于其存儲(chǔ)方式,可以存儲(chǔ)多種信息。在標(biāo)志寄存器中,信息以位存儲(chǔ)。標(biāo)志寄存器中的每一位可以代表特定的信息。

      這是我在網(wǎng)上找到的標(biāo)志寄存器的原理圖。從這張圖我們可以知道哪些是用的,哪些是不用的。我就不細(xì)說了。接下來,我們來看看這些位的具體含義。

      CF(進(jìn)位標(biāo)志):進(jìn)位標(biāo)志位。該位用于無符號(hào)數(shù)運(yùn)算。一般來說,當(dāng)執(zhí)行無符號(hào)運(yùn)算時(shí),該位記錄運(yùn)算結(jié)果的最高有效位到高位的進(jìn)位值或從高位的借位值。注意,這里的進(jìn)位和借位是相對(duì)于二進(jìn)制的。我們?cè)僬乙粡垐D加深理解。

      PF(奇偶校驗(yàn)標(biāo)志):奇偶校驗(yàn)標(biāo)志位。這個(gè)位的判斷需要我們把結(jié)果變成二進(jìn)制。如果結(jié)果的低8位中有偶數(shù)個(gè)1,則將PF的值設(shè)置為1;如果是奇數(shù)個(gè)1,則將其設(shè)置為0。注意,它必須是結(jié)果的低8位。

      PF的第2位,奇偶標(biāo)志位和flag記錄相關(guān)指令執(zhí)行后所有位中1的個(gè)數(shù)是否為偶數(shù),如果是,PF=1;如果是奇數(shù),PF=0。

      執(zhí)行

      mov al,00000000b

      添加al,00000111b

      mov al,00000000b

      添加al,00000011b

      驗(yàn)證:

      AF(輔助標(biāo)志):輔助進(jìn)位標(biāo)志位。這個(gè)位用的不多,書上也沒提,我就簡(jiǎn)單查了一下資料。該位表示當(dāng)加法和減法進(jìn)行到一半時(shí),是否形成進(jìn)位/借位。如果是,AF=1。這個(gè)沒人能理解,那就舉個(gè)例子吧。例如MOV AL,00001110 MOV BL,00001000 ADD AL,BL。最終結(jié)果是AL=00010110,是從低四位到高四位的進(jìn)位。相反,在減法中,第三位數(shù)不足以從第四位數(shù)借位(注意位數(shù)從第0位數(shù)開始),這叫從低四位數(shù)向上四位數(shù)借位!和前面的AL一樣,前四位是高四位,后四位是低四位。例如,當(dāng)兩個(gè)字節(jié)相加時(shí),如果有一個(gè)從低4位到高4位的進(jìn)位,則AF=1。

      ZF(零標(biāo)志):零標(biāo)志位。這個(gè)位非常簡(jiǎn)單,可以判斷結(jié)果是否為0。如果結(jié)果為0,則將其設(shè)置為1;如果不為0,則設(shè)置為0。

      執(zhí)行

      移動(dòng)軸,1

      子軸,1

      移動(dòng)軸,2

      子軸,1

      可以看出,當(dāng)計(jì)算出的ax結(jié)果為0時(shí),ZF為ZR=1;當(dāng)結(jié)果為1(非0)時(shí),ZF為NZ=0。

      SF(符號(hào)標(biāo)志):符號(hào)標(biāo)志位。因?yàn)樗且粋€(gè)符號(hào)位,所以它用于有符號(hào)的數(shù)據(jù)。如果結(jié)果是否定的,將其設(shè)置為1;如果結(jié)果為正,則設(shè)置為0。

      SF,符號(hào)標(biāo)志位,標(biāo)志的第7位,記錄相關(guān)指令執(zhí)行后結(jié)果是否為負(fù),如果是,SF=1;如果不是負(fù)數(shù),SF=0。

      執(zhí)行:

      10000001b

      添加al,1

      10000000美元

      添加al,01111111b

      驗(yàn)證:

      當(dāng)SF=1為NG時(shí),意味著如果指令執(zhí)行帶符號(hào)數(shù)運(yùn)算,結(jié)果將為負(fù)。

      當(dāng)SF=0為PL時(shí),意味著如果指令執(zhí)行有符號(hào)數(shù)運(yùn)算,結(jié)果為非負(fù)。

      TF(定時(shí)器溢出標(biāo)志):定時(shí)器溢出標(biāo)志。該位主要用于調(diào)試中的-t指令。當(dāng)cpu執(zhí)行完一條指令,如果檢測(cè)到TF位的值為1,就會(huì)產(chǎn)生單步中斷,觸發(fā)中斷進(jìn)程。有了這個(gè)位,我們可以在調(diào)試中一步跟蹤程序。

      IF(中斷標(biāo)志):中斷使能標(biāo)志位。當(dāng)IF=1時(shí),cpu執(zhí)行完當(dāng)前指令后響應(yīng)中斷,引起中斷進(jìn)程;當(dāng)IF=0時(shí),不響應(yīng)可屏蔽中斷。

      DF(方向標(biāo)志):方向標(biāo)志位。在字符串處理指令中,si(指向原始偏移地址)和di(指向目標(biāo)偏移地址)的增加或減少在每次操作之后被控制。當(dāng)DF=0時(shí),si和di在每次運(yùn)算后增加;當(dāng)DF=1時(shí),si和di在每次操作后下降。我們可以使用cld指令將DF的值設(shè)置為0,使用std指令將DF的值設(shè)置為1。DF需要和rep、movsb等指令一起使用。

      OF(溢出標(biāo)志):溢出標(biāo)志位。該位用于確定是否存在溢出。注意溢出的概念只針對(duì)有符號(hào)數(shù)據(jù),就像進(jìn)位只針對(duì)無符號(hào)數(shù)據(jù)一樣。當(dāng)OF=0時(shí),沒有溢出;當(dāng)OF=1時(shí),表示溢出。

      的,溢出標(biāo)志位,標(biāo)志的第11位,超出機(jī)器能表示的范圍稱為溢出。如果發(fā)生溢出,OF=1,如果沒有,OF=0。

      例如,對(duì)于8位有符號(hào)數(shù)據(jù),機(jī)器表示的范圍是-128 ~ 127;對(duì)于16位有符號(hào)數(shù)據(jù),范圍為-32768~32767。

      執(zhí)行:

      mov al,64歲

      加鋁,64

      mov al,63歲

      加鋁,64

      驗(yàn)證:

      下面有幾個(gè)字符串轉(zhuǎn)移指令。

      格式:movsb

      功能:執(zhí)行movsb指令相當(dāng)于以下步驟。

      1) ((es)*16 (di))=((ds)*16 (si))

      2)如果df=0,(si)=(si) 1 (di)=(di) 1

      如果df=1,(si)=(si)-1 (di)=(di)-1

      當(dāng)然也可以發(fā)一句話。

      格式:movsw

      功能:將ds:si指向的存儲(chǔ)單元中的字送入es:di,然后根據(jù)bit標(biāo)志寄存器df的值將si和di遞增或遞減2。

      Movsb和movsw是字符串傳輸操作中的一個(gè)步驟。一般來說,movsb和movsw都是和rep一起使用的,格式如下:

      代表movsb

      Rep函數(shù):根據(jù)cx的值,重復(fù)執(zhí)行以下串行傳輸指令。因?yàn)槊看螆?zhí)行movsb指令si和di,都會(huì)遞增或遞減到下一個(gè)單元或上一個(gè)單元,所以rep movsb可以循環(huán)實(shí)現(xiàn)(cx)字符的傳輸。

      8086CPU提供以下兩條指令來設(shè)置df位。

      Cld指令:將標(biāo)志寄存器的測(cè)向位置設(shè)置為0

      標(biāo)準(zhǔn)指令:將df位置1設(shè)置為標(biāo)志寄存器

      1)編程,用字符串傳遞指令,將數(shù)據(jù)段中的第一個(gè)字符串復(fù)制到后面的空格中。

      數(shù)據(jù)段

      歡迎來到masm!

      db 16 dup (0)

      數(shù)據(jù)結(jié)束

      代碼段

      移動(dòng)軸,數(shù)據(jù)

      移動(dòng)ds,ax

      mov si,0

      移動(dòng),斧

      莫夫迪,16歲

      mov cx,16

      中央生活區(qū)

      代表movsb

      代碼結(jié)束

      目標(biāo)

      2)編程,用字符串傳遞指令,將F000段最后16個(gè)字符復(fù)制到數(shù)據(jù)段。

      數(shù)據(jù)段

      db 16 dup (0)

      數(shù)據(jù)結(jié)束

      代碼段

      mov ax,0f000h

      移動(dòng)ds,ax

      mov si,0ffffh

      移動(dòng)軸,數(shù)據(jù)

      移動(dòng),斧

      莫夫迪,15歲

      mov cx,16

      標(biāo)準(zhǔn)

      代表movsb

      代碼結(jié)束

      目標(biāo)

      以上問題已解答完畢,如果想要了解更多內(nèi)容,請(qǐng)關(guān)注本站

      標(biāo)簽:
      最新文章