Ktl-icon-tai-lieu

tập lệnh cơ bản assembly

Được đăng lên bởi phiataythudo
Số trang: 7 trang   |   Lượt xem: 1520 lần   |   Lượt tải: 1 lần
3. Lập trình với ngôn ngữ ASSEMBLY
Ngôn ngữ Assembly là hợp ngữ rất gần với ngôn ngữ máy. Mỗi lệnh của Assembly có
sự tiêu tốn dữ liệu (byte) và chu kì máy xác định. Do đó, chúng ta có thể dễ dàng nhận
ra sự bố trí dữ liệu của chương trình. Lập trình bằng Assembly không có sự tiêu tốn
do mã thừa như lập trình bằng ngôn ngữ C, một chương trình viết bằng Assembly
chạy nhanh và hiệu quả hơn nhiều so với chương trình viết bằng C.
Tuy nhiên do Assembly rất gần với ngôn ngữ máy nên đòi hỏi người lập trình phải có
một trí nhớ tốt, nếu không, chúng ta phải chuẩn bị một chồng sách để có thể mở ra
bất cứ lúc nào. Và chúng ta rất khó có thể viết một chương trình lớn bằng Assembly.
a. Cấu trúc một chương trình Assembly:
Chúng ta hãy tham khảo đoạn code viết bằng Assembly để tìm hiểu cấu trúc của nó.
Chương trình nhấp nháy LED theo mã nhị phân tăng dần:
org 0000h ;Chương trình bắt đầu từ địa chỉ 0000h
main: ;Khai báo nhãn để sau này dùng câu lệnh nhảy để nhảy tới đây
;Thụt vào 1 kí tự tab cho dễ nhìn
inc a ;Tăng giá trị thanh ghi a lên một đơn vị
mov P0,a ;Chép nội dung thanh ghi a vào cổng P0
call delay ;Gọi hàm delay
jmp main ;Nhảy đến nhãn main
delay: ;Khai báo nhãn delay để lệnh call gọi tới1
mov R7,#255 ;Chép giá trị 255 vào thanh ghi R7
loop: ;Khai báo nhãn loop để nhảy về đây
mov R6,#255 ; Chép giá trị 255 vào thanh ghi R7
loop1: ;Khai báo nhãn loop1 để nhảy về đây
djnz R6,loop1 ;Giảm thanh ghi R6 đi 1 và nhảy nếu R6>0
djnz R7,loop ; Giảm thanh ghi R7đi 1 và nhảy nếu R7>0
ret ;Trở về từ hàm delay
end ;Kết thúc đoạn code
Rút ra cấu trúc của chương trình như sau:
org 0000h;Bắt đầu đoạn code
...;Đoạn lệnh
end;Kết thúc đoạn code
Bắt đầu bằng câu lệnh ORG 0000H
Tiếp đến là đoạn lệnh. Trong đoạn lệnh có các nhãn để rẽ nhánh chương trình.
Mỗi lệnh bắt đều bắt đầu bằng tên lệnh, tiếp theo là kí tự trắng hay kí tự tab, rồi đến
các tham số lệnh.

Mỗi lệnh chỉ được viết trên 1 dòng.
Kết thúc bằng câu lệnh END
Chú ý: Trong Asembly không phân biệt chữ hoa hay chữ thường. Dòng chú thích được
đặt sau dấu chấm phẩy ‘;’.
b. Các lệnh cơ bản trong Assembly:
Kí hiệu được dùng dưới đây:
o Rn: Kí hiệu cho các thanh ghi R0 đến R7 (của băng thanh ghi được chọn).
o Data: Dữ liệu trực tiếp, là 1 byte dữ liệu bên trong RAM hoặc thanh ghi chức năng
đặc biệt.
o @Ri: 1 byte dữ liệu vùng RAM được đánh địa chỉ bởi thanh ghi R0 hoặc R1.
o #data: 1 byte dữ liệu tức thời (là những con số do người lập trình đặt sẵn).
o #data16: 2 byte dữ liệu tức thời (là những con số của người lập trình).
o Addr...
3. L p trình v i ngôn ng ASSEMBLY
Ngôn ng Assembly là h p ng r t g n v i ngôn ng máy. M i l nh c a Assembly có
s tiêu t n d li u (byte) và chu kì máy xác đ nh. Do đó, chúng ta có th d dàng nh n
ra s b trí d li u c a ch ng trình. L p trình b ng Assembly không có s tiêu t n ươ
do mã th a nh l p trình b ng ngôn ng C, m t ch ng trình vi t b ng Assembly ư ươ ế
ch y nhanh và hi u qu h n nhi u so v i ch ng trình vi t b ng C. ơ ươ ế
Tuy nhiên do Assembly r t g n v i ngôn ng máy nên đòi h i ng i l p trình ph i có ườ
m t trí nh t t, n u không, chúng ta ph i chu n b m t ch ng sách đ có th m ra ế
b t c lúc nào. Và chúng ta r t khó có th vi t m t ch ng trình l n b ng Assembly. ế ươ
a. C u trúc m t ch ng trình Assembly: ươ
Chúng ta hãy tham kh o đo n code vi t b ng Assembly đ tìm hi u c u trúc c a nó. ế
Ch ng trình nh p nháy LED theo mã nh phân tăng d n:ươ
org 0000h ;Ch ng trình b t đ u t đ a ch 0000hươ
main: ;Khai báo nhãn đ sau này dùng câu l nh nh y đ nh y t i đây
;Th t vào 1 kí t tab cho d nhìn
inc a ;Tăng giá tr thanh ghi a lên m t đ n v ơ
mov P0,a ;Chép n i dung thanh ghi a vào c ng P0
call delay ;G i hàm delay
jmp main ;Nh y đ n nhãn main ế
delay: ;Khai báo nhãn delay đ l nh call g i t i1
mov R7,#255 ;Chép giá tr 255 vào thanh ghi R7
loop: ;Khai báo nhãn loop đ nh y v đây
mov R6,#255 ; Chép giá tr 255 vào thanh ghi R7
loop1: ;Khai báo nhãn loop1 đ nh y v đây
djnz R6,loop1 ;Gi m thanh ghi R6 đi 1 và nh y n u R6>0 ế
djnz R7,loop ; Gi m thanh ghi R7đi 1 và nh y n u R7>0 ế
ret ;Tr v t hàm delay
end ;K t thúc đo n codeế
Rút ra c u trúc c a ch ng trình nh sau: ươ ư
org 0000h;B t đ u đo n code
...;Đo n l nh
end;K t thúc đo n codeế
B t đ u b ng câu l nh ORG 0000H
Ti p đ n là đo n l nh. Trong đo n l nh có các nhãn đ r nhánh ch ng trình.ế ế ươ
M i l nh b t đ u b t đ u b ng tên l nh, ti p theo là kí t tr ng hay kí t tab, r i đ n ế ế
các tham s l nh.
tập lệnh cơ bản assembly - Trang 2
Để xem tài liệu đầy đủ. Xin vui lòng
tập lệnh cơ bản assembly - Người đăng: phiataythudo
5 Tài liệu rất hay! Được đăng lên bởi - 1 giờ trước Đúng là cái mình đang tìm. Rất hay và bổ ích. Cảm ơn bạn!
7 Vietnamese
tập lệnh cơ bản assembly 9 10 357