組合語言裡的清零(答對給分,20以上)

2021-08-13 16:50:40 字數 2044 閱讀 3728

1樓:文刀舍予

還有就是將偏移置零的時候將暫存器清零

你舉的那個例子裡的xor bx,bx就是將偏移置零的,bx不是定址的暫存器嘛

如果你要用一個暫存器計數,首先要將這個暫存器清零,然後在迴圈過程中加一,然後當暫存器的數為某個數的時候就退出迴圈,不過好像基本沒有這麼用的,舉個例子而已

如果之前有賦值指令,也就是你舉的那個例子了→mov cx,n

就不用清零了

n估計是個串的長度,應該在資料段是定義好的

這中方法的好處是在減一的過程中用jnz就能作為退出迴圈的開關

在賦值之前不用將暫存器清零,直接就覆蓋了清不清零有什麼區別啊

回答的挺囉嗦,你努力看一下吧

2樓:

所謂清零,說穿了就是初始化,或者說賦初值,或重置初值.

在這個程式裡,bx的初始值為0,所以,可以這樣:xor bx,bx

而cx的初始值是n,不用多餘地先xor cx,cx,直接mov cx,n就可以了.

3樓:

你看一下bx,和cx是用來幹什麼,bx是用來定址的,不清零的話source[bx+n]是什麼鬼才知道,cx是用來計數的,可能後面還有一段迴圈,cx裡的n就表示迴圈次數,清零幹什麼。

組合語言中如何對暫存器清零

4樓:匿名使用者

一般常用 xor指令

不但指令短,而且執行速度快。

5樓:匿名使用者

樓上的第三種好,只是在暫存器間操作,沒有到記憶體取數

6樓:鯤鵬展翅

以暫存器ax為例

1.mov ax,0

2.and ax,0

3.xor ax,ax

組合語言中,出棧後 出棧的那個數值在棧中會被清零嗎?

7樓:匿名使用者

不會被清零。

組合語言中,出棧是通過pop指令來實現的,首先看一下intel手冊中對於pop指令的描述:

大致意思如下:pop指令從棧頂載入值到目標運算元指定的位置,然後增加棧頂指標。目標運算元可以是一個通用暫存器,記憶體位置或者段暫存器。

可以看到,手冊中並沒有提到出棧後pop要清空原有位置的值。因為這是不必要的,正常使用棧的話,出棧後那個位置的數值對棧沒有影響,在棧增長後,那個位置可能會被新的值覆蓋掉(即通過push壓棧),所以沒有必要清空它。而且,處理器和指令集設計的時候,必然會十分注重效率,不會做多餘的事情,清不清零對棧的使用完全沒有影響,所以設計師當然也不會讓pop做這件事。

8樓:匿名使用者

組合語言中,出棧後 出棧的那個數值在棧中 不會 被清零,

但是 如果有 新的 壓棧操作(入棧),會被新的資料替代。

9樓:匿名使用者

不會被清零,但是這個資料正常情況下不會被訪問到,除非特意去訪問這個資料

10樓:匿名使用者

出棧後 出棧的那個數值在棧中不會被清零 只是sp-1指向上一個棧地址了

11樓:匿名使用者

不會清零。

pop dst  指令執行過程:

(dst)<-((sp)+1, (sp))(sp)<-(sp)+2

可見,棧中資料並無變化,只是sp指標+2。

12樓:匿名使用者

不會清零。不信的話到原地址去看看原數變了沒。

13樓:魔塔過客

出棧操作其實變的只是指標sp.....原數值仍舊保留

14樓:

不會,是原封不動的,所以說自動變數總是一個隨機值,你每次宣告一個自動變數,棧指標就會增加,新變數的值實際上是上一次使用該記憶體的變數值。。。

組合語言中 cy能自動清零嗎

15樓:無畏無知者

cy自動清零,什麼意思?

通過相關指令的執行,cy會被清零;

組合語言的DW是什麼意思,組合語言中的DW怎麼用,能舉個例子說明一下嗎

dw 是定義2位元組空間的意思。dw屬於彙編的一個偽指令,dw定義字型別變數,一個字資料佔2個位元組單元,讀完一個,偏移量加2。db定義位元組型別變數,一個位元組資料佔1個位元組單元,讀完一個,偏移量加1。dd定義雙字型別變數,一個雙字資料佔4個位元組單元,讀完一個,偏移量加4。彙編指令既不控制機器...

組合語言進位與借位的問題

你這裡混淆了兩個概念,無符號數和有符號數。如果你希望得到2 3 1,那麼你應該認為2和 3都是有符號數,既然是有符號數,是否產生借位要看of標誌位,即溢位標誌位 如果你認為2和 3的補碼對應的無符號數253都是無符號數,那麼它們之和為255,沒有產生進位。所以,當你判斷有符號數的時候,不應該看cf來...

機器語言和組合語言和高階語言的關係

答 組合語言和其他高階語言不同,因為類似c 這種高階語言需要先編譯成組合語言再編譯成機器語言。因此彙編是更加貼近機器語言的底層語言,因此也單獨於一類。指令與指令系統的關係,看 指令系統 的定義。程式與指令的關係,看 程式 的定義。機器語言與指令以及程式的關係,看 機器語言 的定義。組合語言與機器語言...