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。
電腦高手來幫幫忙
你的電腦和我們學校的電腦一樣!1.你把電腦從裝!2.不理它!別用win清理助手殺.從登錄檔刪除 試一下.到安全模式下去刪就是開機按f8,要麼就格式化重灌系統,或者你用360安全衛士試試也行,他好像也有專殺工具的,你試試看 3721流氓啊,同情你,記住這個教訓吧。解決的辦法是買一純安裝的xp光碟 你說...
請高手來幫幫忙 籃球
再全能的球員也是有缺點的,你可以試著不要想著把自己的缺點都補好了,那也是不可能的,只能是儘量,但是你可以發揮你的特長。身體在裡面不佔優勢,那麼如果你能夠突破到裡面那就應該直接上籃了,還有一個好辦法,就是拋投,突破進去後單腳起跳帶些後仰,這樣並不需要很好的身體條件,而且不容易被蓋,又由於突到裡面離籃筐...
文字高手幫幫忙!徵集口號,高手幫我取名(超高分徵集)
宣傳標語口bai號 大門du 實施三大戰略創信譽 培育企業zhi文化樹形象 院內dao 1,敬業篤學內 務實創新 誠信強企 追求卓越容2,以誠信樹形象 以創新求發展 3,形象是生存之寶 誠信是發展之源 4,追求完美找差距 群策群力破難題 5,誠信修路 振興四處 6,以工作質量樹信譽 以資訊管理上水平...