实训汇编语言设计——排序& 查找

 

实训内容、程序及操作要领

排序:

data    segment

mem     db 10,9,8,7,6,5,4,3,2,1

len     dw $-mem

data    ends

code    segment

main    proc far

        assume cs:code,ds:data

start:  push ds

        sub ax,ax

        push ax

        mov ax,data

        mov ds,ax

        mov dl,1

redo:   mov bx,offset mem

        mov cx,len

        dec cx

        sub dl,0

        jz done

        mov dl,0

redo1:  mov al,[bx]

        inc bx

        cmp al,[bx]

        jc next

        mov ah,[bx]

        mov [bx],al

        dec bx

        mov [bx],ah

        inc bx

        mov dl,1

next:   dec cx

        jnz redo1

        jmp redo

done:   ret

main    endp

code    ends

        end start

查找:

data    segment

mem     db 1,2,3,4,5,7

len     equ $-mem

mesg1   db "Pleas input the number you want to find:",10,13,"$"

mesg2   db 10,13,"The number has been found!",10,13,"$"

mesg3   db 10,13,"The number has not been found!",10,13,"$"

data    ends

code    segment

;main procdure

main    proc far

        assume cs:code,ds:data

start:  push ds

        xor ax,ax

        push ax

        mov ax,data

        mov ds,ax

        mov si,offset mem

        mov bx,si

        add bx,len-1

        mov di,bx

        mov dx,offset mesg1

        call xianshi

        mov ah,1

        int 21h

        sub al,30h

 call chzhao

        ret

main    endp

;xianshi procdure

xianshi proc near

 mov ah,9

        int 21h

 ret

xianshi endp

;chazhao procdure

chzhao proc near

redo:   mov bx,di

        add bx,si

        shr bx,1

        cmp [bx],al

        jz done

        jnc redo1

        inc bx

        mov si,bx

        jmp next

redo1:  dec bx

        mov di,bx

next:   cmp di,si

        jge redo

        mov ah,0

        jmp done1

done:   mov ah,1

        done1:  cmp ah,1

        jnz nhave

        lea dx,mesg2

        jmp xshi

nhave:  lea dx,mesg3

xshi:   call xianshi

 ret

chzhao endp

code    ends

        end start

编译链接:(查找为例)

C:/DOCUME~1/LUOZHU~1>masm chazhao2

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981-1985, 1987.  All rights reserved.

Object filename [chazhao2.OBJ]:

Source listing  [NUL.LST]:

Cross-reference [NUL.CRF]:

  50420 + 449420 Bytes symbol space free

      0 Warning Errors

      0 Severe  Errors

C:/DOCUME~1/LUOZHU~1>link chazhao2

IBM Personal Computer Linker

Version 2.00 (C)Copyright IBM Corp 1981, 1982, 1983

Run File [CHAZHAO2.EXE]:

List File [NUL.MAP]:

Libraries [.LIB]:

Warning: No STACK segment

There was 1 error detected.

生成CHAZHAO2.EXE

运行:

C:/DOCUME~1/LUOZHU~1>chazhao2

Pleas input the number you want to find:

3

The number has been found!

 

你可能感兴趣的:(c,汇编,Microsoft,语言)