彙編高手進來幫幫忙,彙編高手進來幫幫忙!!!!!!!

2021-06-07 14:40:25 字數 7018 閱讀 1970

1樓:燭秋

不是高手路過,練練手:

data segment

grade dw 87,89,52,63,47,95,100,52,96,88

rank dw 10 dup(?)

output db 'ranking:',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:datastart:

mov ax,data

mov ds,ax

xor si,si

xor di,di

mov cx,0ah

loop1:

mov ax,grade[si]

push cx

mov cx,0ah

loop2:

cmp ax,grade[di]

jae ***

inc rank[si]

***:

inc di

inc di

loop loop2

inc rank[si]

inc si

inc si

xor di,di

pop cx

loop loop1

;下面用於輸出名次

mov dx,offset output

mov ah,09h

int 21h

mov cx,0ah

xor si,si

loop3:

mov dx,rank[si]

xor dl,30h

cmp dl,3ah

jne ***x

mov dl,41h

***x :

mov ah,02h

int 21h

mov dl,0ah

int 21h

mov dl,0dh

int 21h

inc si

inc si

loop loop3

mov ah,4ch

int 21h

code ends

end start

想不到好的演算法,只好用最笨的那種。

ps:這個問題並不難,但你給的分太低了,所以這麼久沒有人想幫你。

彙編高手請進來幫幫忙啊,十萬火急!

2樓:

這是我以前做的16位二進位制轉十進位制:

data segment

a db 15

data ends

code segment

assume cs:code,ds:databeg: mov ax,data

mov ds,ax

mov bh,a

mov bl,16

l1: inc bh

mov ah,02h

mov dl,bh

int 21h

push dx

mov cl,0h

mov ah,02h

mov dl,cl

int 21h

pop dx

cmp bh,0ffh

je l3

dec bl

jz l2

jmp l1

l2: push dx

mov bl,0dh

mov cl,0ah

mov ah,02h

mov dl,bl

int 21h

mov ah,02h

mov dl,cl

int 21h

mov bl,16

pop dx

jmp l1

l3: mov ah,4ch

int 21h

code ends

end beg

你的提問大同小異,應該都差不多

第六問是不是要接一片8255?

第七問不會.

希望對你有幫助

高分彙編程式設計,高手來幫幫忙

3樓:匿名使用者

有彙編和c轉化的軟體

4樓:匿名使用者

for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

這個c是對的不過你還少了點東西......

下面的彙編我倒是看的很對但是有點還是沒有看明白....

你的意思是每次si和di都因該加2是在儲存資料時佔用的2個位元組.

5樓:匿名使用者

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

6樓:匿名使用者

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

7樓:

我以前的教材上都有。。

不過現在不知道書放**了。。你看看下面的罷。可能有點用

提問:對於氣泡排序,我的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。

彙編高手幫幫忙 10

8樓:

如果是學組合語言專門的就是

ibm pc組合語言程式設計 清華 沈美明的那本

至於16為還是32位這個好象都是要學的,不過現在一般都是16位的吧。至於那個tasm5.0,我只聽說過masm5.

0 不好意思,不過現在彙編應該用的比較多的是masm5.0下面有使用方法

1.開始→執行→輸入"cmd"(沒有引號,下同)按回車即可進入dos

2.在寫字板裡寫完程式以後,以".asm"儲存,比如儲存為“text.asm”,而不是“text.txt”。

3.假設你的masm儲存在d盤的masm資料夾下。

在dos中鍵入如下命令:

c:\>d:(敲完前面這幾個字元按回車,下同)[命令解釋:進入d根目錄]

d:\>cd masm[開啟d盤下的masm資料夾]

d:\masm>masm text.asm[用masm對前面寫好的程式text.asm進行編譯]

然後會出現:object filename [text.obj]:並等待輸入,在後面輸入將要生成的obj檔名就可,比如text.obj

接著會出現:source listing [nul.lst]:此處為中間檔案,一般用不到,所以不用輸入,直接按回車

然後會出現:cross-reference [nul.crf]:中間檔案,直接回車

然後會出現:50536+415656 bytes symbol space free

0 warning errors

0 severe errors

d:\masm>

這就說明已經編譯好了,在masm資料夾下會新生成一個檔案:text.obj

接著在 d:\masm>處繼續輸入:

d:\masm>link text.obj

會出現:run file [text.exe]:並等待輸入,在後面輸入將要生成的exe檔名就可,比如text.exe,按回車

然後會出現:list file [nul.map]:中間檔案,直接回車

接著會出現:libraries [.lib]:直接回車

至此,如果程式沒有寫錯的話,就會能生成正確的exe檔案了。

提供一個地址 訊雷的http://wstatic.xunlei.

網頁高手進來幫幫忙

最近才上網,所以孤陋寡聞,以前都不知道frontpage要退休了,今天看了幾位樓樓官發言,眼界大開。frontpage沒什麼難的,一般一般。新工具是什麼?只用html能有何用?還是學php,jsp,asp吧。有前途。學習網頁找我,qq81364016 學dm mx 2004實用,又快捷。網上教程還很...

工作問題高手進來幫幫忙吧

我建議你做銷售,固定工資越做越沒勁,而且他給您的工資又不高。銷售其實做起來挺好的,完成一單生意又有成就感。年輕人不要只想穩定,做好銷售你能做很多工作。至於社保問題,我覺得這沒什麼用。首先宣告我不是不愛國,我們的社保拿去養現在的老人,我們這輩年輕的基數大,養他們沒問題。等我們老了,那是年輕的人又少,老...

請高手進來幫忙一下,求高手幫幫忙

不要去等她下班啊,她都拒絕你幾次了,就證明她還在考察你嘛,發簡訊吧,這樣似乎比較好,打 也成啊。先培養感情啦,不要這麼急!先 簡訊交流感情,多收集一些她的個人資訊,包括喜歡起 玩,喜歡吃什麼東西,喜歡穿什麼衣服,喜歡玩什麼東西 然後呢,找個好點的日子,比如生日,比如過幾天的七夕情人節,比如一些節假日...