国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

匯編語言學(xué)習(xí)筆記六

這篇具有很好參考價(jià)值的文章主要介紹了匯編語言學(xué)習(xí)筆記六。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

flag 寄存器

匯編語言學(xué)習(xí)筆記六
CF:進(jìn)位標(biāo)志位,產(chǎn)生進(jìn)位CF=1,否則為0
PF:奇偶位,如010101b,則該數(shù)的1有3個(gè),則PF=0,如果該數(shù)的1的個(gè)數(shù)為偶數(shù),則PF=1。0也是偶數(shù)
ZF:在相關(guān)指令執(zhí)行后(運(yùn)算和邏輯指令,傳送指令不影響ZF的值),其結(jié)果為0,則ZF=1,否則為0。
SF:符號(hào)標(biāo)志位,如果結(jié)果為負(fù),則SF=1,否則為0,SF是對(duì)有符號(hào)運(yùn)算的一種結(jié)果記錄
DF:方向標(biāo)志位,控制每次操作之后si、di的增減。df=0,遞增,否則遞減。串傳送指令movsb就是根據(jù)df的值,實(shí)現(xiàn)si和di的遞增或者遞減,movsw是傳遞一個(gè)字型數(shù)據(jù)。movsb和movsw通常與rep搭配使用,rep movsb就相當(dāng)于

s: 	movsb
	loop s

rep的指令是根據(jù)cx的值重復(fù)執(zhí)行串傳送指令。
cld和std分別可以將df位置0和置1。
下面利用rep movsb指令將data段的第一個(gè)字符串移動(dòng)到它后面的空間

assume cs:code, ds:data
data segment
	db 'Welcome to nasm!'
	db 16 dup (0)
data ends

code segment
start:
	mov ax, data
	mov ds, ax
	mov si, 0 ;定義了原始地址的段地址和偏移地址

	mov ex, ax
	mov di, 16 ;定義了目標(biāo)地址的段地址和偏移地址
	mov cx, 16 ;循環(huán)16次
	cld ;使df=0,si和di遞增
	
	rep movsb ;默認(rèn)就是將原始地址ds:si傳遞到目標(biāo)地址es:di
	
code ends

end start

OF:溢出標(biāo)志位,發(fā)生溢出,OF=1,否則為0。CF是針對(duì)無符號(hào)的,OF是針對(duì)有符號(hào)的。

adc和sbb指令

在相加的兩個(gè)數(shù)字,都大于16位,則需要用adc來計(jì)算。
匯編語言學(xué)習(xí)筆記六
可以看到0198h和0183h相加時(shí),低位需要進(jìn)位,這時(shí)低位的加法就可以用adc指令

mov ax, 0198h
mov bx, 0183h
adc al, bl
add ah, bh

這樣ax中存放的就是031B了。adc是用來處理有進(jìn)位的加法的指令。
sbb是帶借位的減法指令,和adc一樣,是利用CF位記錄的借位值或進(jìn)位值。

cmp指令

cmp指令相當(dāng)于減法指令,但不保存結(jié)果,只會(huì)影響標(biāo)志寄存器的值,如

cmp ax, ax

則結(jié)果位0, pf=1, zf=1, sf=0, cf=0, of=0
cmp指令執(zhí)行后,可以通過sf和of兩個(gè)標(biāo)志位判斷其大小,之所以不能單純用sf判斷,是因?yàn)橛锌赡馨l(fā)生溢出現(xiàn)象。

檢測(cè)比較結(jié)果的條件轉(zhuǎn)移指令

jcxz就是一個(gè)條件轉(zhuǎn)移指令,不過它是檢測(cè)cx中的值是否為0,為0,就jmp,下面的指令是檢測(cè)標(biāo)志寄存器的相關(guān)位的值,如果該值滿足,則jmp。通常和cmp指令一同使用。這樣的效果就和c語言的if語句類似。

指令 含義 檢測(cè)的相關(guān)標(biāo)志位
je 等于則轉(zhuǎn)移 zf=1
jne 不等于則轉(zhuǎn)移 zf=0
jb 低于則轉(zhuǎn)移 cf=1
jnb 不低于則轉(zhuǎn)移 cf=0
ja 高于則轉(zhuǎn)移 cf=0且zf=0
jna 不高于則轉(zhuǎn)移 cf=1或zf=1

e:equal
ne: not equal
b: below
nb: not below
a: above
na: not above

pushf和popf指令

pushf是將標(biāo)志寄存器的值壓棧,popf是從棧中彈出數(shù)據(jù),送入標(biāo)志寄存器中。文章來源地址http://www.zghlxwxcb.cn/news/detail-435665.html

到了這里,關(guān)于匯編語言學(xué)習(xí)筆記六的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 從零學(xué)習(xí)開發(fā)一個(gè)RISC-V操作系統(tǒng)(四)丨RISC-V匯編語言編程

    從零學(xué)習(xí)開發(fā)一個(gè)RISC-V操作系統(tǒng)(四)丨RISC-V匯編語言編程

    ?? 本系列是博主參考B站課程學(xué)習(xí)開發(fā)一個(gè)RISC-V的操作系統(tǒng)的學(xué)習(xí)筆記,計(jì)劃從RISC-V的底層匯編指令學(xué)起,結(jié)合C語言,在Ubuntu 20.04上開發(fā)一個(gè)簡(jiǎn)易的操作系統(tǒng)。一個(gè)目的是通過實(shí)踐操作學(xué)習(xí)和了解什么是操作系統(tǒng),第二個(gè)目的是為之后學(xué)習(xí)RISC-V的集成電路設(shè)計(jì)打下一定基礎(chǔ)

    2024年01月25日
    瀏覽(42)
  • 【匯編語言】CS、IP寄存器

    【匯編語言】CS、IP寄存器

    理論:CPU執(zhí)行何處的指令,取決于CS:IP 應(yīng)用:程序員可以通過改變CS、IP中的內(nèi)容,進(jìn)行控制CPU即將要執(zhí)行的目標(biāo)指令; 問題:如何改變CS、IP中的值? 設(shè)想: 1、通過使用Debug中的R命令進(jìn)行修改寄存器的值,例如rcs, rip。 結(jié)論:不可以。原因是:Debug是調(diào)試手段,并非程序方

    2024年02月08日
    瀏覽(22)
  • 匯編語言——第11章 標(biāo)志寄存器

    匯編語言——第11章 標(biāo)志寄存器

    目錄 ??????? 引言 11.1 ZF標(biāo)志 11.2 PF標(biāo)志 11.3 SF標(biāo)志 檢測(cè)點(diǎn)11.1 11.4 CF標(biāo)志 11.5 OF標(biāo)志 檢測(cè)點(diǎn)11.2 11.6 abc指令 11.7 sbb指令 11.8 cmp指令 11.9 檢測(cè)比較結(jié)果的條件轉(zhuǎn)移指令 檢測(cè)點(diǎn)11.3 11.10 DF標(biāo)志和串傳送指令 1、DF標(biāo)志 2、串傳送指令 11.11 pushf和popf 11.12 標(biāo)志寄存器在Debug中的表示

    2024年02月07日
    瀏覽(18)
  • 【匯編語言】棧區(qū)與SS:SP寄存器

    【匯編語言】棧區(qū)與SS:SP寄存器

    匯編語言 - 棧 棧是一塊特殊的內(nèi)存空間,本文涉及的CPU為8086CPU,所有與內(nèi)存地址有關(guān)的數(shù)字皆為16進(jìn)制 棧的運(yùn)行規(guī)律 - 先進(jìn)后出,后進(jìn)先出 以下為入棧的過程: 以下是出棧的過程: 以上就是棧的運(yùn)行機(jī)制,棧的入棧叫做push,出棧叫做pop 在8086CPU中,棧是一塊特殊的內(nèi)存空

    2023年04月08日
    瀏覽(24)
  • 匯編語言筆記(一)——匯編語言基礎(chǔ)

    匯編語言筆記(一)——匯編語言基礎(chǔ)

    一、開發(fā)環(huán)境 我使用visual studio 2022 preview,其他版本的設(shè)置大同小異。 第一步: 打開visual studio,點(diǎn)擊“創(chuàng)建新項(xiàng)目”: 第二步: visual studio并沒有專門的匯編項(xiàng)目,所以需要掛羊頭賣狗肉,選擇C++空項(xiàng)目 第三步: 輸入項(xiàng)目名稱,點(diǎn)擊創(chuàng)建 第四步: 鼠標(biāo)右鍵單擊項(xiàng)目名稱—

    2024年02月05日
    瀏覽(24)
  • 匯編語言—常見匯編指令匯總

    mov? ? 寄存器 ,數(shù)據(jù)? ? ? ? ? ? ? ? 如:mov ax ,8 mov? ?寄存器,寄存器? ? ? ? ? ? ? 如:mov ax,bx mov? ?寄存器,內(nèi)存單元????????? 如:mov ax,[0] mov? ?內(nèi)存單元,寄存器? ????????如:mov [0],ax mov? ?段寄存器,寄存器? ????????如:mov ds,ax add? ?寄存器,數(shù)據(jù)

    2024年02月10日
    瀏覽(15)
  • 5.6 匯編語言:匯編高效數(shù)組尋址

    數(shù)組和指針都是用來處理內(nèi)存地址的操作,二者在C語言中可以互換使用。數(shù)組是相同數(shù)據(jù)類型的一組集合,這些數(shù)據(jù)在內(nèi)存中是連續(xù)存儲(chǔ)的,在C語言中可以定義一維、二維、甚至多維數(shù)組。多維數(shù)組在內(nèi)存中也是連續(xù)存儲(chǔ)的,只是數(shù)據(jù)的組織方式不同。在匯編語言中,實(shí)現(xiàn)

    2024年02月11日
    瀏覽(26)
  • 5.8 匯編語言:匯編高效除法運(yùn)算

    通常情況下計(jì)算除法會(huì)使用 div/idiv 這兩條指令,該指令分別用于計(jì)算無符號(hào)和有符號(hào)除法運(yùn)算,但除法運(yùn)算所需要耗費(fèi)的時(shí)間非常多,大概需要比乘法運(yùn)算多消耗10倍的CPU時(shí)鐘,在Debug模式下,除法運(yùn)算不會(huì)被優(yōu)化,但Release模式下,除法運(yùn)算指令會(huì)被特定的算法經(jīng)過優(yōu)化后轉(zhuǎn)

    2024年02月11日
    瀏覽(16)
  • 5.7 匯編語言:匯編高效乘法運(yùn)算

    乘法指令是一種在CPU中實(shí)現(xiàn)的基本算術(shù)操作,用于計(jì)算兩個(gè)數(shù)的乘積。在匯編語言中,乘法指令通常是通過 mul(無符號(hào)乘法) 和 imul(有符號(hào)乘法) 這兩個(gè)指令實(shí)現(xiàn)的。由于乘法指令在執(zhí)行時(shí)所消耗的時(shí)鐘周期較多,所以編譯器在優(yōu)化代碼時(shí)通常會(huì)嘗試將乘法操作轉(zhuǎn)換為更

    2024年02月11日
    瀏覽(20)
  • 匯編語言第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語言介紹

    匯編語言第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語言介紹

    第一講:計(jì)算機(jī)的組織架構(gòu)和匯編語言介紹 匯編語言 計(jì)算機(jī)組織架構(gòu) 數(shù)字電路 術(shù)語回顧 數(shù)制 數(shù)字電路 硬件電路 數(shù)字電路的問題 匯編語言的開始 程序的節(jié)(sections) 調(diào)用操作系統(tǒng)的系統(tǒng)調(diào)用 列出文件(Listing files) 匯編和鏈接 調(diào)試匯編程序 反匯編現(xiàn)有的程序 附錄 課程資源

    2024年04月09日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包