當前位置:編程學習大全網 - 源碼下載 - 匯編語言 編程:數組中求最大數 求數組中負數的個數 (最好註解說明下壹些重要語句)

匯編語言 編程:數組中求最大數 求數組中負數的個數 (最好註解說明下壹些重要語句)

1.數組中求最大數

DATAS SEGMENT

max dw 14h,65h,454h,9h,87,248

num dw $-max

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

main proc far

START:

push ds

mov ax,0

push ax

MOV AX,DATAS

MOV DS,AX

mov si,offset max;將數組的首地址送給si,以便用si對數組操作

mov ax,num;算出數組的個數,控制循環次數

mov cl,2

div cl

mov cx,ax

mov bx,0

next:

push bx;壓入棧,保護數據

push cx

mov bx,[si]

call output;調用子程序,輸出數組中的數據

mov dl,32;輸出空格

int 21h

pop cx

pop bx

cmp bx,[si];判斷比較,以找出最大值

jl dig

jmp l1

dig:

mov bx,[si]

l1:

add si,2

loop next

call crlf;回車換行

call output;輸出最大值

ret

main endp

output proc near;是個將bx中二進制數轉換為十六進制的子程序

mov cl,4

mov di,4

shift:

rol bx,cl

mov ax,bx

and al,0fh

cmp al,09h

jg l2

add al,30h

jmp l3

l2:add al,37h

l3:mov dl,al

mov ah,2

int 21h

dec di

jnz shift

ret

output endp

crlf proc near;回車換行的子程序

mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

ret

crlf endp

CODES ENDS

END main

2.求數組中負數的個數

DATA SEGMENT

array DW 12H,14,-5,-10H,33,40,48,-22,-32,10H

NDATA DW 10 DUP(0)

N DW 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

main proc far

START: push ds

mov ax,0

push ax

MOV AX,DATA

MOV DS,AX

mov cx,10

mov si,offset array

l1:mov bx,[si]

push cx

call output;輸出數組裏的數據

mov dl,32

int 21h

pop cx

add si,2

loop l1

MOV BX,0

MOV SI,0

MOV DI,0

MOV CX,10

NEXT: MOV AX,ARRAY[BX]

TEST AX,8000H;判別是否為負數

JZ L

INC N ;統計負數的個數

MOV NDATA[DI],AX

ADD DI,2

L: ADD BX,2

LOOP NEXT

MOV DL,0AH

MOV AH,2

INT 21H

MOV DL,0DH

MOV AH,2

INT 21H

MOV DX,N

ADD DL,30H

MOV AH,2

INT 21H

ret

main endp

output proc near

mov cl,4

mov di,4

shift:

rol bx,cl

mov ax,bx

and al,0fh

cmp al,09h

jg l2

add al,30h

jmp l3

l2:add al,37h

l3:mov dl,al

mov ah,2

int 21h

dec di

jnz shift

ret

output endp

CODE ENDS

END main

  • 上一篇:多人實時聊天源代碼大全
  • 下一篇:評價體系是什麽?
  • copyright 2024編程學習大全網