.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