關於組合語言的問題,有關於組合語言的問題

2022-07-06 00:41:59 字數 3982 閱讀 7052

1樓:寶瑞英

樓主的從**看來的?裡面有些是錯誤的。

8086/8088可定址的儲存空間只有1mb。這1mb的空間在邏輯上(注意:是邏輯上,實際上還是一個整體)被分成若干塊,每個塊的大小為64kb;其中,每一個塊中又被分成若干小節,每個小節16b,故而整個記憶體1mb可以被分為64k個小節(注意:

不是64k個塊)。

對比一下,樓主知道**錯了吧?

8086/8088只能處理1mb的記憶體,多於1mb它就處理不了了,即它最多隻能外接1mb的記憶體。

2樓:匿名使用者

8086中最大的塊大小為64k,(ffff+1)h=(64k)d因為偏移地址為4位16進位制數,所以最大為ffff,之所以加1是因為開始還有個0000

所說的都是記憶體中的,8086最大隻能認1m記憶體(包括了其他硬體的快取)

(因為8086的地址匯流排是20位,2的20次方=1024k=1m)沒聽說過64個塊,

3樓:牢菊月

所胃補,是用定址偏移來實現的!所胃一m是隻能一次處理這麼大的容量,懂嗎,你要知道我們用的電腦只能定址4g的大小,其餘容量是通過騙移地址來實現的!硬碟越大相對定址速就變慢了!

4樓:匿名使用者

不夠就不夠唄,怎麼搞呢,沒辦法,拿什麼補啊,補個屁啊。。如果有多的也是浪費。

所以電腦在買的時候要夠用就行了。

5樓:匿名使用者

就是記憶體條的那個記憶體

6樓:僑新惠承業

不是這樣的。

cmpsw是字型別資料比較指令,比較的結果隻影響零標誌位zf。若相等,零標誌位置位,zf=1;否則,零標誌位復位,zf=0。

repnz或repne,是不等重複字首指令。repnzcmpsw是不等重複字型別資料比較指令,執行步驟如下:

(1)、判斷條件:cx≠0

且zf=0;

(2)、如果條件不成立,則結束重複操作,執行程式中的下一條指令;

(3)、否則,cx=cx-1(不影響有關標誌位),並執行其後的字串操作指令,在該指令執行完後,再轉到步驟(1)。

程式段執行結果無非有二:

1、兩個緩衝區的資料沒有相同的字,則cx=0,zf=0,執行movaddr,-1

jmpelse

2、兩個緩衝區的資料有相同的字,則zf=1,跳到found處,執行subsi,2

movaddr,si

有關於組合語言的問題

7樓:

指令格式:jmp short 標號。

這是一種段內相對轉移指令,目的運算元均用標號表示,程式轉向的有效地址等於當前ip暫存器的內容加上8位或者16位位移量。如果位移量是16位,那麼表示近轉移,說明目的地址與當前ip的距離在-32768~+32767個位元組之間。

如果轉移的範圍在-128~127個位元組之內,則稱為短轉移,指令中只需要用8位位移量,他是近轉移指令的一個特例。

8樓:匿名使用者

你就可以直接理解為跳到quest

9樓:匿名使用者

jmp short 是短跳轉,不能超過256個位元組,跳遠了就出錯。如果你的標號quest距離當前位置超過了128個位元組,編譯會出錯,你只能用jmp quest了。

jmp short 的好處是指令只佔兩個位元組,節省空間。

10樓:匿名使用者

短轉移,即8位轉移,指令中轉移的偏移地址只用一個位元組儲存,所以只能在-128到+127位元組(彙編為二進位制**後)之間轉移。

有關於組合語言的問題?

關於組合語言中的loop指令

11樓:匿名使用者

這個程式迴圈一次,是由cx存放的。

cx中存放的是迴圈的次數

程式設計計算2^12:

assume cs:code

code segment

mov ax,2

mov cx,11

s:add ax,ax

loop s

mov ax,4c00h

int 21h

code ends

end執行loop s時,首先要將(cx)減1,若(cx)不為0,則前往s處執行add ax,ax。

cpu執行loop指令的時候,要進行兩步操作:

1 (cx)=(cx)-1

2 判斷cx中的值,不為零則轉移到標號處執行程式,如果為零,則向下執行

例1 計算2^2 結果放在ax

code segment

assume cs:code

mov ax,2

add ax,ax

mov ax,4c00h

int 21h

code ends

end例2 計算2^3 結果放在ax

code segment

assume cs:code

mov ax,2

add ax,ax

add ax,ax

mov ax,4c00h

int 21h

code endsend

12樓:兔丞飛

intel80x86系列組合語言中的loop指令,是迴圈指令,迴圈次數由計數暫存器cx指定。是否執行迴圈體的判斷指令在迴圈體之後,至少執行1次迴圈體,即至少迴圈1次。

執行loop指令時,cpu自動將cx的值減1,若cx=0,則結束迴圈;否則,重複執行迴圈體。

本題是個特例,雖然計數暫存器的初值為0,但當執行完1次迴圈體,遇到loop指令時,cx=0-1=65535。雖然產生了借位,但cx不等於0,所以,要繼續執行迴圈體。

mov cx,0

l5:……

loop l5

共執行迴圈體65536次。

擴充套件資料

程式設計計算2^12:

assume cs:code

code segment

mov ax,2

mov cx,11

s:add ax,ax

loop s

mov ax,4c00h

int 21h

code ends

end執行loop s時,首先要將(cx)減1,若(cx)不為0,則前往s處執行add ax,ax

13樓:艾茵施坦大話區塊鏈

組合語言loop指令

14樓:匿名使用者

是迴圈指令,迴圈次數由計數暫存器cx指定。是否執行迴圈體的判斷指令在迴圈體之後,所以,至少執行1次迴圈體,即至少迴圈1次。執行loop指令時,cpu自動將cx的值減1

直到cx為0 ,迴圈結束

一個關於組合語言的問題?

15樓:匿名使用者

led equ po ;定義bailed代表p0口

num equ 18h ;定義num為18hequ是一個偽指令du,你zhi

可以理解為賦值dao的意思,該處定義的情況回編譯時遇到答led將用p0代替,遇到num將用18h替代

16樓:小睡黍

定義bai了兩個常量led(等於

dupo)和num(等於18h),以後就直接用led和zhinum代表daopo和18h。equ是偽操作符,用於定義常量回。等價於答c語言的 #define led po 和 #define num 18h。

17樓:匿名使用者

equ ——標號賦值偽指令,equ定義的字元名必須先定義後使用,data定義的字元名可以後定義先使用。用equ偽指令可以把一個彙編符號賦給一個名字。18h是一個地址!

18樓:匿名使用者

這是一個賦值語句,

其實意思就是:

led=po;

num=18h

組合語言的問題,一個組合語言的問題

jmp byte ptr bx 改正 baijmp word ptr bx byte 需改du為 zhi word才可以 shl word ptr bx 2改正 mov cx,2 shl word ptr bx cx當移位次dao數 1時,專要使用cx寄存屬器 理由抄很簡單,因為8086cpu不支援...

組合語言暫存器進位問題,組合語言進位與借位的問題。

add al,al 是低8位加法,若有 bai進du 位,進位zhi標誌cf 1,但進位1自然丟失dao,不向ah進位.若要得到專預期結果,指令可修改為 屬 mov ax,d888 在dos的debug中輸入指令,數值無須加h字尾,預設為16進數 add ax,0088 int 3 執行結果,ax ...

懂組合語言的進,組合語言高手進

很簡單的程式。輸入的數字,是acscii碼形式的,要減去30h,才是數字形式的數字。程式中,兩個輸入數字,全都減去了30h,然後進行了加法,結果存入ral單元。輸出顯示,要先把數字,變換成ascii碼,僅僅加30h,是不全面的,數字大於9,就要加37h,這些可以去查ascii表,求得證明。dseg ...