組合語言中的問題求高手解,組合語言中的一個問題求高手解

2021-03-03 22:23:56 字數 1637 閱讀 8046

1樓:我是真的少校

mov ax,a

cmp ax,b

bnz l;執行else

mov bx,0

mov d,ax

jmp ll

l: ....

ll: ...;if的下一條語句復

bnz 標號制 ;若上一條指令執行的結果非零,就跳到標號執行他是判斷flag暫存器的zf位,若結果不為0,則 跳轉到標號處

組合語言程式的一道題。求高手解答!!!

2樓:北極星

你的答案是

抄錯的答案是ax=2,bx=4,cx=2,dx=2 你可以襲自己編寫一個程bai序除錯du

start:mov ax,01h

mov bx,02h

mov cx,03h

mov dx,04h

;前面4行使ax=1,bx=2,cx=3,dx=4

next:inc ax ;ax+1執行後zhiax=2

add bx,ax ;bx=bx+ax執行後bx=4

shr dx,1 ;dx向右移一位,相當dao於dx除於2,執行後dx=2

loope next ;重點來了,這一行的loope他的執行具體是,先使cx減1,然後再判斷cx是否等於零,並且判斷標誌位zf是否等於1,如果cx<>0並且zf=1那麼就轉到標號,否則退出迴圈.上一行的shr dx.1是影響zf的,結果zf是等於0,所以這裡退出迴圈,執行完後cx=2

3樓:聲學初學者

mov ax,01h------->ax=1mov bx,02h------->bx=2mov cx,03h------->cx=3mov dx,04h------->dx=4inc ax-------->ax=ax+1=1+1=2add bx,ax------>bx=bx+ax=2+2=4shr dx,1-------->就是把dx的值向右來移一位自,即dx=2

然後是怎麼迴圈的我就不知道了,你這個不是一個完成的程式吧?

4樓:匿名使用者

start:mov ax,01h

mov bx,02h

mov cx,03h

mov dx,04h

這個懂嗎?

:inc ax 此時ax=2

add bx,ax 此時bx=4

shr dx,1 此時dx為1

c沒有變還是3

所以abcd依次為2431.。。專

。。。。。。。。。。。。。

loope next退出了屬next程式

5樓:匿名使用者

用匯編生產baiexe程式

然後用dudebug除錯(開始—執行zhi—debug)這樣你就可以一步

dao一的跟著你的程式專走

你能清楚的看到屬你記憶體和暫存器的變換

原本現在學彙編就是要了解記憶體和暫存器的變換,而debug給你提供了一個很好的環境

以後有不懂的就用debug除錯

如果程式太大你可以用od除錯

至於debug怎麼用你可以到網上去搜尋下

組合語言中st指令什麼意思組合語言中,ST指令什麼意思?

st是store的簡寫,ld是load簡寫,前面一個是寫,後面一個是讀。st是源暫存器 儲存區,ld是儲存區 目的暫存器。字資料傳送指令 ld,st 這是最簡單的資料傳送指令,不用考慮符號位的問題,直接以機器的位長存取資料。ld 從記憶體中取32位字資料放人暫存器,st將暫存器中的32位字資料儲存到...

組合語言中ptr的作用是什麼,組合語言中CMP的作用是什麼?

ptr應該就是pointer 說明地址指標型別。當兩個運算元型別均不明確時,必須用byte ptr 位元組屬性 或word ptr 字屬性 將一個儲存器運算元定義為位元組或字型別。如 mov byte ptr si oah 指明 si 為位元組型別 在沒有暫存器名存在的情況下,用操作符 x ptr ...

懂組合語言的進,組合語言高手進

很簡單的程式。輸入的數字,是acscii碼形式的,要減去30h,才是數字形式的數字。程式中,兩個輸入數字,全都減去了30h,然後進行了加法,結果存入ral單元。輸出顯示,要先把數字,變換成ascii碼,僅僅加30h,是不全面的,數字大於9,就要加37h,這些可以去查ascii表,求得證明。dseg ...