Untitled
unknown
plain_text
10 months ago
3.5 kB
5
Indexable
; «« Comment begins with ';' to the end of a line ; From masm32\tutorial\console\demo1 ; ; Build this with the "Project" menu using ; "Console Assemble and Link" ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .486 ; tạo mã 32-bit .model flat, stdcall ; mô hình bộ nhớ 32-bit option casemap :none ; phân biệt chữ hoa và chữ thường include \masm32\include\windows.inc ; luôn là dòng đầu tiên include \masm32\macros\macros.asm ; hỗ trợ macro của MASM ; ----------------------------------------------------------------- ; bao gồm các tệp có định dạng MASM cho các lời gọi hàm ; ----------------------------------------------------------------- include \masm32\include\masm32.inc include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc ; ------------------------------------------------ ; các tệp thư viện có định nghĩa cho các hàm xuất khẩu ; và mã đã được kiểm tra tin cậy ; ------------------------------------------------ includelib \masm32\lib\masm32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data v1 dd 10 ; Khai báo giá trị v1 v2 dd 20 ; Khai báo giá trị v2 v3 dd 30 ; Khai báo giá trị v3 max dd 0 ; Biến lưu trữ giá trị lớn nhất avg dd 0 ; Biến lưu trữ giá trị trung bình outputMax db "Maximum value: ", 0 outputAvg db "Average value: ", 0 buffer db 11 dup(?) ; Bộ đệm cho việc chuyển đổi số sang chuỗi .code ; báo cho MASM biết phần mã bắt đầu từ đâu start: ; điểm bắt đầu của chương trình ; Load values into registers mov eax, v1 ; Load value of v1 into register EAX mov ebx, v2 ; Load value of v2 into register EBX mov ecx, v3 ; Load value of v3 into register ECX ; Finding the maximum value mov edx, eax ; Copy v1 into EDX cmp edx, ebx ; Compare EDX with EBX jl L1 ; Jump to L1 if EDX < EBX mov edx, ebx ; EDX = EBX if EDX >= EBX L1: cmp edx, ecx ; Compare EDX with ECX jl L2 ; Jump to L2 if EDX < ECX mov edx, ecx ; EDX = ECX if EDX >= ECX L2: mov max, edx ; Store the maximum value in memory location 'max' ; Calculate the sum add eax, ebx ; EAX = EAX + EBX add eax, ecx ; EAX = EAX + ECX ; Calculate the average mov ebx, 3 ; Move 3 into EBX div ebx ; EAX = EAX / 3 mov avg, eax ; Store the average value in memory location 'avg' ; Print the results invoke StdOut, addr outputMax ; In ra "Maximum value: " invoke dwtoa, max, addr buffer ; Chuyển giá trị max sang chuỗi invoke StdOut, addr buffer ; In ra giá trị lớn nhất invoke StdOut, addr outputAvg ; In ra "Average value: " invoke dwtoa, avg, addr buffer ; Chuyển giá trị avg sang chuỗi invoke StdOut, addr buffer ; In ra giá trị trung bình invoke ExitProcess, 0 ; Thoát khỏi chương trình ; ------------------------------- end start ; báo cho MASM biết chương trình kết thúc ở đâu
Editor is loading...
Leave a Comment