當前位置:編程學習大全網 - 編程語言 - 急求 匯編語言程序

急求 匯編語言程序

添加排序了 用的是8086指令 用的是這個編譯器

/masmplus/ 很好用 創建工程選擇DOS

有什麽不知道hi我

.model small

.stack 200h

.data

dwBig dw 0 ;大寫字母緩沖區地址

dwSmall dw 0 ;小寫字母緩沖區地址

dwNumber dw 0 ;數字緩沖區地址

dwOther dw 0 ;其他符號緩沖區地址

szMsg db 'XkGjMc9+8-7*6/5(2)h!F~A?z',13,10,13,10,'$' ;讀取的字串符

szBuffBig db 100 dup (0) ;大寫字母緩沖區

szEnter1 db 13,10

szBuffSmall db 100 dup (0) ;小寫字母緩沖區

szEnter2 db 13,10

szBuffNumber db 100 dup (0) ;數字緩沖區

szEnter3 db 13,10

szBuffOther db 100 dup (0) ;其他符號緩沖區

szEnter4 db 13,10,'$'

.CODE

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;排序子程序,帶入參數si將要排序的字串符地址

_PaiXu proc

push si

push di

push bx

mov di,si

xor al,al

@@:

inc di

cmp BYTE ptr [di-1],al

jnz @B ;得到字串符結尾(結尾是零)

mov cx,di

sub cx,si

dec cx

dec cx ;得到排序次數

mov dx,cx

mov bx,si

@loop2: ;外循環

push cx

mov si,bx

mov cx,dx

@loop1: ;內循環

mov al,BYTE ptr [si]

cmp al,BYTE ptr [si+1]

jbe @Small ;左邊數大於右邊數則交換

xchg al,BYTE ptr [si+1]

mov BYTE ptr [si],al ;從小到大排序

@Small:

inc si

loop @loop1

pop cx

loop @loop2

pop bx

pop di

pop si

ret

_PaiXu endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

START:

mov ax,@data

mov ds,ax

lea dx,szMsg

mov ah,9

int 21h ;顯示讀取的字串符

lea ax,szBuffBig

mov dwBig,ax

lea ax,szBuffSmall

mov dwSmall,ax

lea ax,szBuffNumber

mov dwNumber,ax

lea ax,szBuffOther

mov dwOther,ax ;將各緩沖區的地址存放起來

lea si,szMsg ;設要讀取的字符串為源地址

mov cx,25 ;設置讀取字串符的長度(字節數)

cld ;置DF標誌位為零

@Search:

lodsb ;將si指向地址的字節內容存放到al中

cmp al,30h ;0

jb @Next1;小於則跳轉

cmp al,39h ;9

ja @Next1;大於則跳轉

inc dwNumber

mov di,dwNumber

mov BYTE ptr [di-1],al ;如果是數字存放到數字緩沖區

jmp @ret

@Next1:

cmp al,41h ;A

jb @Next2

cmp al,5ah ;Z

ja @Next2

inc dwBig

mov di,dwBig

mov BYTE ptr [di-1],al ;如果是大寫字母存放到大寫字母緩沖區

jmp @ret

@Next2:

cmp al,61h ;a

jb @Next3

cmp al,7ah ;z

ja @Next3

inc dwSmall

mov di,dwSmall

mov BYTE ptr [di-1],al ;如果是小寫字母存放到小寫字母緩沖區

jmp @ret

@Next3:

inc dwOther

mov di,dwOther

mov BYTE ptr [di-1],al ;其他字符存放

@ret:

loop @Search ;CX不為零(字串符沒有查找完畢)開始下壹次查找

lea si,szBuffSmall

call _PaiXu

lea si,szBuffNumber

call _PaiXu

lea si,szBuffBig

call _PaiXu

lea si,szBuffOther

call _PaiXu ;排序

lea dx,szBuffBig ;顯示分類好的字串符

mov ah,9

int 21h

;暫停,任意鍵關閉

mov ah,1

int 21h

mov ah,4ch ;結束,可以修改al設置返回碼

int 21h

END START

  • 上一篇:蘇州尚學教育
  • 下一篇:1~2歲的幼兒能練習上下樓梯嗎?
  • copyright 2024編程學習大全網