1樓:匿名使用者
有彙編和c轉化的軟體
2樓:匿名使用者
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
這個c是對的不過你還少了點東西......
下面的彙編我倒是看的很對但是有點還是沒有看明白....
你的意思是每次si和di都因該加2是在儲存資料時佔用的2個位元組.
3樓:匿名使用者
data segment
assume ds:data
buff db 11,?
db 11 dup(20h)
db '$'
data ends
code segment
assume cs:code
main proc far
mov ax,data
mov ds,ax
mov es,ax
mov dx,offset buff
mov ah,0ah ;注意21h號中斷所得的字串中int 21h ;buff+2才是字串首mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
begin:
mov si,offset buff+1 ;判斷buff所有元素是否都成了空格
mov cx,0 ;計算空格
up:inc cx
cmp cx,0ah ;
jz exit
inc si
cmp byte ptr [si],24h ;是否到了結尾jz ok
cmp byte ptr [si],20h ;是否空格jz up
ok:mov si,offset buff+2
mov bl,0
next:
lodsb
cmp al,24h
jz show
cmp al,bl
jl next
mov bl,al
jmp next
show:
mov si,offset buff+1
conti:
inc si
cmp byte ptr [si],24hjz begin ; 跳到冒泡法下一輪
cmp bl,byte ptr [si] ;
jnz conti
mov ah,2
mov dl,bl ;顯示一輪所得的最大值int 21h
mov byte ptr [si],20hjmp conti ;
exit:
mov ah,4ch
int 21h
main endp
code ends
end main
4樓:匿名使用者
crlf macro ;回車換行mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
endm
data segment
dest db 10 dup(?),0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:datastart: mov ax,data
mov ds,ax
mov es,ax
mov di,offset dest
mov cx,10
mov dl,' '
mov ah,2
int 21h
aga1: mov dl,8
mov ah,2
int 21h
aga2: mov ah,1
int 21h
cmp al,'a'
jb aga1
cmp al,'z'
ja aga1
stosb ;al 送入》es:[di]
loop aga2
crlf
mov dx,offset dest
mov ah,9
int 21h
mov bx,10
mov di,offset dest
dec di
next: mov cx,bx
mov al,[di+1]
next1: cmp al,[di+2]
jae next2
xchg al,[di+2]
next2: inc di
loop next1
mov di,offset dest
add di,10
sub di,bx
mov [di],al
dec bx
jnz next
mov dx,offset dest
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
5樓:
我以前的教材上都有。。
不過現在不知道書放**了。。你看看下面的罷。可能有點用
提問:對於氣泡排序,我的c語言這樣實現:
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
我想用匯編也同樣實現功能,**如下:
dseg segment
data dw 23,12,45,32,127,3,9,58,81,72
dseg ends
cseg segment
assume cs:cseg,ds:dseg
stat: mov ax,dseg
mov ds,ax
lea bx,data
mov si,0 ;i=0
nexti: mov di,si ;j=i+1
inc di
mov ax,[bx+si]
jj: mov dx,[bx+di]
cmp ax,dx ;data[i]?data[j]
jae btiao
xchg ax,dx ;data[i]=data[j],j++
cmp di,10 ;j?10
jae ii ;j>=10
jmp jj ;j<10
ii: inc si
cmp si,9 ;i?9
jb nexti ;si<9
mov ah,4ch
int 21h
cseg ends
end stat
解答:你的程式演算法並沒有錯,錯在基本概念上。
你定義的變數的型別是字(word),佔2個位元組,但指標si和di只有一個inc,即只增了1,應該增2(再增加一個inc指令:程式中inc si和inc di後再加一個,共3處);同樣道理,迴圈終止判斷的條件“cmp di,10”和“cmp si,9”也應該修改為“cmp di,20”和“cmp si,18”。
或者修改data的變數定義為db、然後迴圈中ax和dx都改為al和dl就正確了。
這裡你將高階語言中的概念想當然地用到了組合語言中,混淆了兩種的區別。高階語言中i和j是陣列下標,表示第i和j個陣列元素;而組合語言中si和di指標指向的是儲存器地址,加1只是地址加1,不是資料個數加1,每個資料是2個位元組,佔2個儲存單元,所以地址加2才是資料個數加1。
彙編高手幫幫忙,彙編高手幫幫忙
如果是學組合語言專門的就是 ibm pc組合語言程式設計 清華 沈美明的那本 至於16為還是32位這個好象都是要學的,不過現在一般都是16位的吧。至於那個tasm5.0,我只聽說過masm5.0 不好意思,不過現在彙編應該用的比較多的是masm5.0下面有使用方法 1.開始 執行 輸入 cmd 沒有...
彙編高手幫幫忙!急正確的追加50分
太長了 code segment assume cs code,ds codeorg 100h start push cs pop ds mov ax,3 int 10h mov ax,0b800h mov es,ax cldq0 lea dx,tips 提示輸入時間mov ah,9 int 21h...
高手來幫幫忙,IP網路問題
reply from 119.75.213.51 你發出ping命令後,收到你的ping並做出應答的伺服器ip位址 bytes 32 是你傳送ping後對方伺服器返回的icmp應答包的大小為32位元組.ping命令預設應答資料報大小為32位元組 time 46ms 是伺服器應答的延時,也就是從你那訪...