Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Bài thực hành 1: Viết một đoạn chương trình tìm số nhỏ nhất trong 3 số (1 chữ số) a,b,c

cho trước.

Ý Tưởng: Ở bài này chúng ta sẽ so sánh lần lượt từng cặp số với nhau để tìm ra số nhỏ nhất. Sau đó sẽ
chuyển giá trị này thành ASCII để có thể in ra màn hình.
Giải Thích:
- Đầu tiên chúng ta gán các giá trị cho trước vào a1, b1, c1 ở label _start.
- Tiến hành so sánh từng cặp số với một, đầu tiên sẽ là a1 và b1. Nếu a1 lớn hơn hoặc bằng b1 thì
sẽ jump để label compare_b_and_c để tiếp tục so sánh b1 và c1.
- Giá trị nhỏ nhất sẽ được gán vào dl, lúc này ở label print_num sẽ thực hiện việc chuyển đổi giá trị
dl thành ASCII để có thể in ra màn hình.
- Label print_num sẽ thêm vào 0x30 giá trị của dl ( bởi các giá trị số trong bản mã có giá trị từ
0x30 đến 0x39 )
- Tiếp đến thực hiện set up stack cho hàm sys_write, và đánh dấu điểm kết thúc của chuỗi kí tự
được in ra.
- Sau đó call đến hàm sys_write để in giá trị ra màn hình và thực hiện call sys_exit nhằm kết thúc
chương trình.
Bài thực hành 2: Viết chương trình chuyển đổi một số (number) 123 thành chuổi ‘123’.Sau đó thực hiện
in ra màn hình số 123.

Ý Tưởng: Bằng cách sử dụng div cho 10, ta sẽ lấy được từng chữ số của số cho trước, từ đó chuyển đổi
từng số thành ASCII và thêm nó vào chuỗi kết quả.
Giải Thích:
- Sau khi khởi tạo stack, ta sẽ tạo ra một vùng nhớ đủ lớn để có thể chứ chuỗi kết quả mà chúng ta
sắp xuất ra màn hình. Đồng thời gán trị của num vào ax và đánh dấu kết thúc chuỗi.
- Label convert sẽ là một vòng lặp có nhiệm vụ chuyển từng phần tử của ax thành ASCII bằng cách
thực hiện div với 10, kết quả sẽ được lưu vào ax còn phần dư của phép tính sẽ được để ở dl. Sau
đó chuyển dl thành ASCII tương tự như câu 1.
- Nếu ax là một giá trị khác 0 thì Label convert sẽ được thực hiện lại.
- Biến count được dùng để đếm số phần đã được thêm vào kết quả. Biến này nhằm mục đích định
vị được vị trí của pointer trên stack.
- Sau khi kết thúc chuyển đổi , tiến hành setup stack theo biến count và thực hiện call sys_write và
sys_exit như câu 1.
Bài thực hành 3: Cải tiến chương trình yêu cầu 1 sao cho tìm số nhỏ nhất trong 3 số bất kỳ (nhiều hơn 1
chữ số)

You might also like