⏯️Arrays
Theo như các bạn cũng đã học qua một số ngôn ngữ lập trình bậc cao rồi thì chắc hẳn các bạn cũng biết là chức năng của mảng là gì nên mình sẽ không nói nữa. Hôm nay mình sẽ liệt kê ra các cú pháp để khai báo 1 mảng như sau:
Cach1:
NUMBERS DW 0x34, 0x45, 0x56, 0x67, 0x75, 0x89
; Cách này sẽ khai báo ra một mảng định nghĩa sẵn các giá trị cho từng phần tử mảng
; Để lấy được phần tử "0x45" thì ta sẽ trỏ tới theo cú pháp NUMBERS + 1
Cach2:
NUMBERS TIMES 8 DW 0x0
; Cách này sẽ khai báo ra 10 phần tử với cùng 1 giá trị là 0x0.
Ví dụ với code sau đây:
section .data
msg db "Hello, Here is sum of Arrays: "
len equ $-msg
number db 0x2, 0x3, 0x4
sum db 0x0
section .text
global _start
_start:
mov edx, len
mov ecx, msg
mov ebx, 0x1
mov eax, 0x4
int 0x80
mov ecx, 0x3
mov eax, number
mov ebx, [sum]
calc:
push ecx
add ebx, [eax]
inc eax
pop ecx
loop calc
add ebx, 0x30
mov [sum], ebx
mov edx, 0x1
mov ecx, sum
mov ebx, 0x1
mov eax, 0x4
int 0x80
mov eax, 0x1
int 0x80

mov eax, number
được thực thiThì bạn có thể thấy nó sẽ di chuyển cả địa chỉ của biến number vào thanh ghi eax.
Ngược lại với number là địa chỉ thì [number] sẽ lưu trữ giá trị khi mov được thực thi thì giá trị là cái sẽ được di chuyển. Sau khi thực thi code trên thì bạn sẽ được output là 9
.
Bài tập:
Bài tập của buổi hôm nay sẽ là: Khai báo 1 mảng chứa 10 phần tử. Nhập vào các số tự nhiên và in ra tổng của các số đó
<Phần này mình sẽ không để source vì đều là những phần mình từng làm rồi :v >
Last updated