一道關於位組合運算的彙編程式中有地方不懂

時間 2022-06-23 14:20:03

1樓:鯤鵬展翅

根據題中所給的10位二進位制無符號數的存放格式,即用一個16位字的高10位儲存,而低6位為0.

我們可以假定某個10位二進位制數為1110001001b,則它的儲存格式為

1110001001000000b(低6位為0)

取到ah中的數為11100010b,取到al中的數為01000000h,則ax中的數為0001000111000000b(低6位多了6個0);

要將這個10位二進位制數與200h比較,也應該將200h低6位加6個0,形式表示為:1000000000000000b=8000h,實際參與比較的是這兩個數的16位中的高10位,注意位與位相對應。

2樓:冠月朗

;鯤鵬展翅lhy 回答了「寫法一」為什麼正確

cmp ax,8000h;比較該字資料和200h的大小

;下面我來回答「寫法二 」為什麼正確

mov bh,cl;利用bh臨時儲存cl的值,因為在程式中cl,而下面要用到cl作為移位的位數

mov cl,6;設定cl為6

shr ax,cl;將ax右移位6位,即將16位數中的低6位的6個多餘的0移出,使得原來存放在ax高10位中10位無符號數移到ax的低低10位中,而使高6位添0,這樣ax的值就等於這個10位無符號數的值了

mov cl,bh;恢復cl中的內容,繼續用於存放滿足條件的數的個數

cmp ax,200h;比較ax中該字資料和200h的大小(實際比較的是各自的低10位,因為各自高6位均為0)

3樓:匿名使用者

你好,10位二進位制數最大為3ffh,你這裡說要大於800h,是不是筆誤啊?換個數我來看看,應該有辦法的

彙編程式中,節型別和位元組型別的區別

吉祥二進位制 1 組合語言中沒有節型別。但是彙編程式一般有多個section 節 組成,通常不叫它節,而習慣叫它程式段。2 組合語言的資料型別一般都是以位元組為基本資料型別,一般使用db來定義位元組變數,然後兩個位元組叫做字,一般用dw來定義字變數,四個位元組叫做雙字型別,一般且dd定義雙位元組變數...

求高人指導微控制器T1定時一分鐘的彙編程式下面是我自己寫的程式,請大家改正謝謝了

org 0 1 漏了開機入口地址,最好加上ajmp main org 001bh ljmp time1int org 0050h main mov sp,60hmov r7,250 mov r6,4 mov tmod,10h mov tl1,0a0h mov th1,15h 2 筆誤,應該是15a0...

關於C語言的問題的一道程式設計題

include void evenoddsum int psource,int charray,int pevensum,int poddsum for i charray i if pevensum if poddsum return int main int nevensum 0,noddsum...