Mang1 ASM

Màu nền
Font chữ
Font size
Chiều cao dòng

.Model small

Hienxau Macro xau

Push AX DX

lea DX, xau

Mov Ah, 9h

int 21h

Pop DX AX

Endm

Clrscr Macro

Push AX

Mov Ah, 0fh

int 10h

Mov AH, 0H

INT 10h

Pop AX

EndM

.stack 100h

.Data

msg1 db 13,10, ' **********************Chuong trinh ve mang *********** $'

msg2 db 13,10, ' Hay nhap vao so phan tu cua mang:$'

msg3 db 13,10, ' Mang vua nhap:$'

msg4 db 13,10, ' Tong cac phan tu:$'

msg5 db 13,10, ' Phan tu Min:$'

msg6 db 13,10, ' Phan tu Max:$'

msg7 db 13,10, ' Mang sau khi sap xep tang dan la: $'

msg8 db 13,10, ' Co tiep tuc hay khong (C?K)? $'

msg9 db 13,10, ' Nhap vao phan tu A[ $'

msg10 db ' ] = $'

msg11 db 13,10, 'Tich cac phan tu cua mang:$'

msg12 db 13,10,' Tong phan tu chan:$'

msg13 db 13,10,' So phan tu chan:$'

msg14 db 13,10,'Tong cac phan tu Le : $'

msg15 db 13,10,' So Phan tu le: $'

msg16 db 13,10,' Mang sau khi sap xep giam dan la: $'

sl dw ? ; chua tong so phan tu cua mang

i dw ? ; So thu tu cua phan tu mang

index dw ? ; vong lap dieu khien

tong dw ? ; chua phan tu tong

min dw ? ;chua phan tu nho nhat

max dw ? ;chua phan tu lon nhat

tg dw ? ; Trung gian gian de sap xep

a dw 100 dup (?)

daucach Db ' $ '

Xuongdong db 13,10,' $'

dcx db 13,10, ' So co trong CX:$'

nhan dw ?

tongc dw ?

tongl dw ?

demchan dw ?

demle dw ?

.code

main:

MOV AX, @data

MOV DS, AX

clrscr

Hienxau Msg1

Start:

Hienxau Msg2

Call Nhapso_N

MOV sl, AX

MOV Index, AX ; Chi so vong lap ngoai cua sap xep

MOV CX,AX ; Cx chua so lan lap

MOV BX,offset a ; BX chua dia chi offset dau tien cua mang a

MOV i,0 ; chi so cua a[i]

Nhanphantu:

Mov AX, i

Hienxau msg9

Call Hienso_10

Hienxau msg10

Call Nhapso_N ; Nhap vao gia tri phan tu cua mang

Mov [BX], AX

inc i ; Tang bien i len mot don vi

ADD BX, 2

Loop Nhanphantu

Hienxau msg3

caLL Hienmang

Hienxau msg4

call Tongmang

call Hienso_10

Hienxau msg11

call tichmang

call Hienso_10

Hienxau msg12

call tongchan

call Hienso_10

hienxau msg14

call tongle

call hienso_10

Hienxau msg13

call sophantuchan

call Hienso_10

hienxau msg15

call sophantule

call hienso_10

Hienxau msg5

call timmin

call hienso_10

hienxau msg6

call timmax

call hienso_10

hienxau msg7

call sapxeptang

hienxau msg16

call sapxepgiam

Ketthuc:

Hienxau msg8

Mov Ah,1h

int 21h

cmp AL, 'k'

je Fins

clrscr

jmp Ketthuc

Fins:

Mov AH,4ch

int 21h

;---------------------cac chuong trinh con phuc vu-----------------------

Hienmang Proc

Push Ax CX DX

Mov Cx, sl

LEA BX, a ; dia chi offset cua mang dua vao Bx

HienHD:

Mov AX, [BX];

Call Hienso_10

Hienxau daucach

ADD BX, 2

Loop HienHD

Pop DX CX AX

Ret

Hienmang ENDP

;---------------Chuong trinh con tinh tinh tong mang------------

Tongmang PROC

;Push BX CX DX

Mov AX,0

MOV CX, sl

Lea BX, a

Conglap:

ADD AX, [BX]

ADD BX, 2

Loop Conglap

Ret

Tongmang ENDP

;----------chuong trinh co tinh tich cac phan tu cua mang------------

Tichmang PROC

MOV AX, 1

MOV CX, SL

LEA BX, A

Nhanlap:

Push CX

Mov CX, [bx]

Mul CX

ADD BX,2

Pop CX

Loop nhanlap

Ret

Tichmang ENDP

;---------------Tong cac phan tu chan----------------'

Tongchan PROC

Mov tongc, 0

MOV CX, SL

LEA BX, A

Congchanlap:

MOV AX, [BX]

Push cx

Mov Cx,2

xor dx,dx

DIV CX

cmp DX, 0

jne goloop

mov AX, tongc

Add AX,[BX]

mov tongC, AX

Goloop:

ADD BX, 2

Pop CX

Loop Congchanlap

MOV AX, tongc

Ret

Tongchan ENDP

;---------------Tong cac phan tu le----------------'

Tongle PROC

Mov tongl, 0

MOV CX, SL

LEA BX, A

Conglelap:

MOV AX, [BX]

Push cx

Mov Cx,2

xor dx,dx

DIV CX

cmp DX, 1

jne goloople

mov AX, tongl

Add AX,[BX]

mov tongl, AX

Goloople:

ADD BX, 2

Pop CX

Loop Conglelap

MOV AX, tongl

Ret

Tongle ENDP

;----------------------Dem so phan tu chan-----------------

Sophantuchan PROC

Mov demchan, 0

MOV CX, SL

LEA BX, A

Demsochan:

MOV AX, [BX]

Push cx

Mov Cx,2

xor dx,dx

DIV CX

cmp DX, 0

jne goloopchan

mov AX, demchan

inc AX

mov demchan, AX

Goloopchan:

ADD BX, 2

Pop CX

Loop Demsochan

mov AX, demchan

Ret

Sophantuchan ENDP

;----------------------Dem so phan tu le-----------------

Sophantule PROC

Mov demle, 0

MOV CX, SL

LEA BX, A

Demsole:

MOV AX, [BX]

Push cx

Mov Cx,2

xor dx,dx

DIV CX

cmp DX, 1

jne gole

mov AX, demle

inc AX

mov demle, AX

Gole:

ADD BX, 2

Pop CX

Loop Demsole

mov AX, demle

Ret

Sophantule ENDP

;---------------Chuong trinh tim phan tu nho nhat--------------

Timmin PROC

Mov CX,sl

dec cx

LEA BX, a

MOV AX,[BX]

Lapmin:

cmp AX, [BX+2]

jna Luon

MOV AX, [BX+2]

Luon:

ADD BX, 2

Loop Lapmin

Ret

Timmin ENDP

;---------------Chuong trinh tim phan tu lon nhat--------------

Timmax PROC

Mov CX,sl

dec cx

LEA BX, a

MOV AX,[BX]

Lapmax:

cmp AX, [BX+2]

jnb phe

MOV AX, [BX+2]

phe:

ADD BX, 2

Loop Lapmax

Ret

Timmax ENDP

;------------------------Chuong trinh con sap xep mang theo thu tu tang dan-------------------

Sapxeptang PROC

MOV CX, sl

Sapxep1:

MOV i,0

Lea BX,A

Lap1:

inc i

MOV AX,i

cmp AX,sl

je Thoatlap1

Mov AX,[BX]

Cmp AX,[BX+2]

jna Khongsapxep1

xchg AX,[BX+2];// Doi cho

Mov [BX],AX

Khongsapxep1:

Add BX,2; //Di toi phan tu tiep theo cua mang

jmp Lap1

Thoatlap1:

Loop Sapxep1

call hienmang

ret

Sapxeptang ENDP

;------------------------Chuong trinh con sap xep mang theo thu tu giam dan-------------------

Sapxepgiam PROC

MOV CX, sl

Sapxep2:

MOV i,0

Lea BX,A

Lap2:

inc i

MOV AX,i

cmp AX,sl

je Thoatlap2

Mov AX,[BX]

Cmp AX,[BX+2]

jnb Khongsapxep2

xchg AX,[BX+2];// Doi cho

Mov [BX],AX

Khongsapxep2:

Add BX,2; //Di toi phan tu tiep theo cua mang

jmp Lap2

Thoatlap2:

Loop Sapxep2

call hienmang

ret

Sapxepgiam ENDP

;---------------------Chuong trinh con nhap so----------------------

Nhapso_N PROC

push cx bx

Mov Bx, 10 ; So hang nhan cua giai thuat cho vao BX

Xor Cx, Cx ; Cho Cx = 0 tai thoi diem ban dau chua nhap gi

Mov Si, Cx ; Si chua dau cua so nhap ( Si = 0 dau duong)

VSN1:

Mov Ah, 1h ; ham nhap mot ky tu tu ban phim

int 21h

cmp Al, 0dh ; kiem xem co phai phim Enter

je VSN3 ; Neu la phim Enter Nhay toi nhan ket thuc nhap

cmp Al, '-' ; co phan nhap dau tru

jne VSN2 ; Neu khong phai dau tru thi nhay den cho nhap so duong

inc Si; tang gia tri Si thanh am

Jmp VSN1

VSN2:

Xor Ah, Ah

Sub AL, 30h

XCHG AX, CX

Mul Bx; nhan Ax voi BX

ADD Cx, AX

Jmp VSN1

VSN3:

AND Si, Si; dung co dau de kiem tra so am hay duong

jz VSN4; Neu la dau duong thi nhay toi nhan chuyen doi

Neg Cx ; Bu 2 Cx de chuyen thanh so am

VSN4:

Mov AX, CX

pop bx cx

Ret

Nhapso_N ENDP

;-----------------------------------------------------------

Hienso_10 PROC

push cx bx

Mov Bx, 10 ; toan hang chia de dua vao ngan xep

Xor Cx, Cx ; Cx chua so lan dua vao trong ngan xep

AND Ax, AX ; Dung co dau ( xem Ax am hay duong)

Jns HSTP1 ; Nhay toi nha hien dau duong

Push Ax

Mov AL, '-'

Mov AH, 0eh

int 10h

Pop Ax

neg Ax

HSTP1:

Xor Dx, Dx ; Cho Dx = 0

Div Bx ; Chia cho Bx

ADD Dx, 30h

Push DX ; Cat phan du vao trong ngan xep

inc Cx

And AX, AX ; Kiem tra co ZF = 0 hoac ZF <> 0

Jnz HSTP1

HSTP2:

Pop Dx

Mov AX, DX

Xor Ah, Ah

Mov Ah, 0eh

int 10h

Loop HSTP2

pop bx cx

Ret

Hienso_10 ENDP

;------------------------Chuong trinh con hien mang -----------------------

End main

Bạn đang đọc truyện trên: Truyen2U.Pro

#katsuki