關於組合語言移植性的問題,關於組合語言中的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 ,迴圈結束

關於組合語言中的標誌位,組合語言中 關於標誌位的問題

鯤鵬展翅 psw中的8個標誌位,在debug下用符號表示,每個標誌位有兩種取值,分別為0和1,各自對應不同的符號。 習明 標誌名設定 nv 清除 ov 溢位 方向 dn 減 up 增 中斷 ei 啟用 di 禁用 正負 ng 負 pl 正 零 zr 0 nz 非0 輔助進製 ac 進製 na 不進製...

組合語言關於OF益出和有符號問題

小虎愛數電 7eh是01111110b,而22h是00100010b,兩數均為正數 相加會溢位 超過127 10h是00010000b為正數,而90h是10010000b為負數 相加不會溢位 溢位只會發生在兩個正數相加 兩個負數相加 或者一正一負相減 al是8位,你先看你的第一段 mov al,10...

彙編 延時子程式,組合語言中延時子程式的問題

daily proc near mov cx,2000h d0 mov ax,0ffffh d1 dec ax jz d1 loop d0 daily endp 延時大概是0.33s 其實延時跟cpu有很大關係,不能用軟體精確計算,可以用8254實現,硬體和軟體功能具有邏輯上的等效性。 用delay...