關於組合語言移植性的問題,關於組合語言中的LOOP指令

時間 2021-09-20 16:20:35

1樓:

兄弟,你理解錯了,首先你要明白,組合語言是一種針對具體機器的低階語言,這裡說的不同機器一般來講是指cpu指令系統不相相容的兩種機器,比如常用的8086與51,dsp,arm,等等,他們的指令系統都不是通用的。自然移植到別的機器上不行,

舉個例子來說吧,假如51,的p0埠可以用來點亮一盞燈,但是對8086或者其他微控制器就不一定了,有可能是p1或者其他口了

你所寫的組合語言是針對8086cpu的,每臺機子上的8086核心都是一樣的,所以都能夠執行,要是你拿到51等其他**就肯定不行了

還要說的是,8086的cpu是8位的,然而真實的pc機是32位或64位的,所以你都要用編譯軟體來編譯執行,並且計算機內有虛擬的8086核心,所以你才能執行

不行你將寫好的程式,在dos下直接debug,

是肯定會出錯的

說了這麼多不知道你明白了沒有??

2樓:匿名使用者

呵呵, 這裡說的兩臺機器是指cpu指令系統不相相容的兩種機器,比如c51微控制器和80x86系列pc機,它們的彙編程式是不能相通的。

咱們學習的asm彙編可以移植到別的電腦上執行,是因為我們用的這些pc機都是相容80x86指令系統的,所以可以正常執行。

3樓:文刀舍予

什麼移不移植的,所有的cpu的組合語言都是相通的,改改不就行了,哪個cpu沒有mov指令!?哪個cpu沒有and指令!?

說組合語言可移植性差的全是懶豬!!!

(弱弱的補充一下:組合語言的......確實......但是絕對沒有把它拿出來當成缺點說的必要)

4樓:丁祈兒

不是2種的彙編,其實的是一種的,只不過是為了方便和實現一些的功能做了一些指令的擴充套件,但是隻是的在那一種的系列之中的不識別。需要的用這裡的指令去程式設計序實現而已

5樓:匿名使用者

有的人回答的不昨的啊,請正確理解彙編可移植性的意義

6樓:

是一種只要指令集一樣就能移植

7樓:匿名使用者

個人電腦指令集都差不多

8樓:匿名使用者

= =!

書上只是說不一定能執行吧

特別是不同體系計算機

關於組合語言中的loop指令

9樓:匿名使用者

這個程式迴圈一次,是由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

10樓:兔丞飛

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

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

組合語言loop指令

12樓:匿名使用者

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

直到cx為0 ,迴圈結束

和組合語言有關的問題,關於組合語言的一個問題

bx為例,其實體地址 ds 16 bx。但你算這個值沒什麼用,因為所有的暫存器都是16位的,放不下這麼大的值。樓上關於 段是若干棟樓,偏移量是門牌號 的比喻不太準確,因為一個實體地址可以由不同的段址 偏移量組合來訪問。建議這樣來理解,記憶體是一條長長的直路,偏移量是眼睛的視力範圍,太遠就看不見了。而...

組合語言關於assume的用法,彙編偽指令 assume 具體作用是什麼

assume 段暫存器的說明語句 在組合語言源程式中可以定義多個段,每個段都要與一個段暫存器建立一種對應關係。建立這種對應關係的說明語句格式如下 assume 段暫存器名 段名 段暫存器名 段名,其中 段暫存器是cs ds es ss fs和gs,段名是在段定義語句說明時的段名。在一條assume語...

組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題

先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...