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 這種高階語言需要先編譯成組合語言再編譯成機器語言。因此彙編是更加貼近機器語言的底層語言,因此也單獨於一類。指令與指令系統的關係,看 指令系統 的定義。程式與指令的關係,看 程式 的定義。機器語言與指令以及程式的關係,看 機器語言 的定義。組合語言與機器語言...