16位彙編第七講 8086指令集(3)

2021-07-25 05:39:58 字數 2684 閱讀 1615

cbw

;al的符號擴充套件至ah

;如al的最高有效位是0,則ah=00

;al的最高有效位為1,則ah=ffh。al不變

cwd 

;ax的符號擴充套件至dx

;如ax的最高有效位是0,則dx=00

;ax的最高有效位為1,則dx=ffffh。ax不變

符號擴充套件的概念

符號擴充套件是指用乙個運算元的符號位(即最高位)形成另乙個運算元,後乙個運算元的各位是全0(正數)或全1(負數)。符號擴充套件不改變資料大小

對於資料ff00h(表示有符號數-256),其最高位d15為1,符號擴充套件後高16位都是1,成為ffffff00h(仍表示有符號數-256)

mov al,80h  ;al=80h

cbw ;ax=ff80h

add al,255 ;al=7fh

cbw ;ax=007fh

cwd ;dx.ax←ax

idiv bx ;ax←dx.ax÷bx

十進位制數調整指令對二進位制運算的結果進行十進位制調整,以得到十進位制的運算結果分成壓縮bcd碼和非壓縮bcd碼調整

壓縮bcd碼就是通常的8421碼;它用4個二進位制位表示乙個十進

制位,乙個位元組可以表示兩個十進位制位,即00~99

非壓縮bcd碼用8個二進位制位表示乙個十進位制位,只用低4個二進

制位表示乙個十進位制位0~9,高4位任意,通常預設為0

二進位制編碼的十進位制數:一位十進位制數用4位二進位制編碼來表示 8086支援壓縮bcd碼和非壓縮bcd碼的調整運算

真值864

二進位制編碼

08h40h

壓縮bcd碼

08h64h

非壓縮bcd碼

08h0604h

(add al,i8/r8/m8)

(adc al,i8/r8/m8)

daa;al←將al的加和調整為壓縮bcd碼

(sub al,i8/r8/m8)

(sbb al,i8/r8/m8)

das;al←將al的減差調整為壓縮bcd碼

使用daa或das指令前,應先執行以al為目的運算元的加法或減法指令

舉例:

1.daa實現十進位制調整

mov al,68h

;al=68h,壓縮bcd碼表示真值68

mov bl,28h

;bl=28h,壓縮bcd碼表示真值28

add al,bl

;二進位制加法:al=68h+28h=90h

daa

;十進位制調整:al=96h

;實現壓縮bcd碼加法:68+28=96

2.das實現十進位制調整

mov al,68h

;al=68h,壓縮bcd碼表示真值68

mov bl,28h

;bl=28h,壓縮bcd碼表示真值28

sub al,bl

;二進位制減法:al=68h-28h=40h

das

;十進位制調整:al=40h

;實現壓縮bcd碼加法:68-28=40

(mul

r8/m8)

aam;ax←將ax的乘積調整為非壓縮bcd碼

(div r8/m8)

aad;ax←將ax中非壓縮bcd碼擴充套件成二進位制數

用法:

1.aam指令跟在位元組乘mul之後,將乘積調整為非壓縮bcd碼

2.aad指令跟在位元組除div之前,先將非壓縮bcd碼的被除數調整為二進位制數

3.aam和aad指令根據結果設定sf、zf和pf,但對of、cf和af無定義

舉例:

1.aam指令舉例

mov ax,0608h

;ax=0608h,非壓縮bcd碼表示真值68

mov bl,09h

;bl=09h,非壓縮bcd碼表示真值9

mul bl

;二進位制乘法:al=08h×09h=0048h

aam;十進位制調整:ax=0702h

;實現非壓縮bcd碼乘法:8×9=72

2.aad指令舉例

mov ax,0608h

;ax=0608h,非壓縮bcd碼表示真值68

mov bl,09h

;bl=09h,非壓縮bcd碼表示真值9

aad;二進位制擴充套件:ax=68=0044h

div bl

;除法運算:商al=07h,餘數ah=05h

;實現非壓縮bcd碼除法:

68÷9=7(餘5)

16位彙編第一講簡介

組合語言他是計算機語言,計算機語言通俗點說就是人類和計算機 也就是cpu 溝通的橋梁,計算機不認識人類的語言,只認得二進位制 0和1 但是我們想讓你算計完成我們的工作,每次都是0,和1,那樣會崩潰的,老一輩的是這樣的 所以後面組合語言出現了,用一些簡單的助記符來替代機器語言 二進位制 通用的語言,比...

16位彙編筆記

1 子函式中進行現場保護時,不能把返回值所存放的暫存器 絕對不可以 入棧,只是被訪問而沒有被修改的暫存器也不需要入棧。子函式的引數盡量入棧,因為如果後面的子函式再次使用這些引數時,需要確保引數沒有變動 2 開機cpu加電後,初始化cs 0ffffh,ip 0。ffffh 0處有一條跳轉指令,跳轉至b...

機器學習第七講

第七講 最優化 1.優化目標 2.梯度下降 隨機梯度下降sgd 訓練乙個樣本,更新 次引數 mini batch是sgd的推廣,通常所說sgd即是mini batch。病態條件 病態條件 不同方向有不同的梯度 學習率的選擇困難。區域性最小 區域性最小 local minima 權重空間是對稱的 放大...