關於組合語言的迴圈問題,關於組合語言中的PUSH問題。

2021-03-03 21:24:15 字數 1424 閱讀 4413

1樓:匿名使用者

你理解bai從程式上面執行下來到du達 loop s後又去執行標zhi號s處,這沒錯。然dao後就內無限迴圈死,這就錯了容

!組合語言的迴圈指令loop是有條件的,這個隱含操作和條件就是每迴圈一次,cx=cx-1,如果cx=0,迴圈就結束了。在這個程式中,迴圈3次結束。

關於組合語言中的push問題。

2樓:匿名使用者

每次repet開始,來cx是需要檢測的字元數自,si是需要bai檢測字元系列du

一端地址

如對字zhi符系列檢測時:abcdefaceda

首次進入,

daocx=11,si指向第一個字元

push cx在堆疊儲存cx,

迴圈利用cx,結合loop ***p實現整個字元系列遍歷檢測(所謂的內迴圈)

取出cx賦予dx,--dx,檢測是否為零,即是否還有字元需要檢測

【事實上push,pop這些操作你只需當它是引數傳遞與儲存即可】事實上

第二行與第三行push cx,pop dx完全沒意義,可以去掉

事實上,在next1子指令系列中

可以不用dx,直接使用 pop cx, 掉dec dx與mov cx,dx,將jnz repet 改為loop repet

順便說一句,事實上該程式的si事實上是:第一次遍歷先指向最後一個字元,然後向前遍歷;第二次遍歷指向倒數第二個字元,然後向前遍歷;。。。

3樓:

基本的copy框架bai如下自

du己分析下不難

zhi理解!dao

repet:

push si

push cx

push cx

pop dx

......

next1: pop dx

pop si

dec si

dec dx

mov cx,dx

jnz repet

4樓:匿名使用者

推ds小斧頭,斧頭

push ax

***程式通常使用,儲存在ds:0000一個int 20h指令,執行上面的**,以便使用retf int 20h ,從而使該程式結束。

5樓:匿名使用者

第一次是儲存cx,第二次是將cx值傳遞給dx

6樓:匿名使用者

所以專業,你為什麼不讀書了嗎?

資料暫存器累加器,通用暫存器。累加器保

回存的計算結答果,通用暫存器儲存資料。

**段,當然,是儲存當前正在執行的**;

資料段的資料儲存在當前程式;

儲存的返回地址和程式引數(地址堆疊段)子程式呼叫;

的其他部分也儲存資料,但一般儲存的批處理計算的結果。

關於組合語言的題目請教,一個關於組合語言的問題?

貪吃蛇,俄羅斯方塊 日曆表示式計算器 有什麼為題說出來交流交流 一個關於組合語言的問題?led equ po 定義bailed代表p0口 num equ 18h 定義num為18hequ是一個偽指令du,你zhi 可以理解為賦值dao的意思,該處定義的情況回編譯時遇到答led將用p0代替,遇到num...

組合語言程式設計的問題,組合語言程式設計問題

1.jmp bx 如果 bx 1020h,那麼 ip 1020h,因為此種形式為通過暫存器的段內間接轉移,執行時將把暫存器的內容直接送ip,所以執行此指令後ip的值為1020h 2.jmp tab bx si 如果 ds 2000h,bx 1020h,si 0002h,tab 0010h,21032...

組合語言中的問題

此處指的是 mov cl,1234 需要4個機器指令週期 非也.指令長度就是指令長度.具體說,就是這句彙編語句翻譯成機器指令後所佔的位元組數.最直觀的莫過於用debug.exe的a命令輸入幾條彙編語句來看看了.執行debug,提示符下打a100回車,依此輸入 mov bx,1000回車,mov ax...