TAILIEUCHUNG - Bài giảng Giới thiệu hợp ngữ - Phạm Tuấn Sơn
Bài giảng Giới thiệu hợp ngữ do Phạm Tuấn Sơn biên soạn cung cấp cho người học các kiến thức: Trình biên dịch hợp ngữ, biên dịch và thực thi chương trình hợp ngữ MIPS bằng PCSpim, một số loại assembler, khái niệm thứ bậc của các ngôn ngữ, mô hình phân tầng các ngôn ngữ trên máy tính,. | Giới thiệu hợp ngữ Phạm Tuấn Sơn ptson@ Hợp ngữ (Assembly Language) • Lệnh máy là dãy bit mà bộ xử lý hiểu để thực thi một công việc nào đó. Ví dụ – Lệnh máy MIPS-32bit gán $8 bằng giá trị trong thanh ghi $9 cộng $10 000000 01001 01010 01000 00000 100000 – Lệnh máy x86-32bit cộng giá trị trong thanh ghi EAX vào thanh ghi ECX 000000 0 1 11 000 001 • Như vậy, có nghĩa là muốn yêu cầu bộ xử lý phục vụ thì cần phải cung cấp dãy bit có ý nghĩa tương ứng (nói cách khác là giao tiếp bằng ngôn ngữ máy (machine language)) Hợp ngữ (assembly language) là ngôn ngữ cấp thấp, cung cấp một cách thể hiện gợi nhớ cho các lệnh máy – Để dễ dàng ghi nhớ các mã lệnh, các địa chỉ nơi lưu trữ dữ liệu hoặc lưu trữ các lệnh, người ta đặt tên cho chúng. Đó là mã giả (mnemonic), là tên gọi (label, tên biến, tên chương trình con), • Hợp ngữ là cho một bộ xử lý hoặc một dòng bộ xử lý (cùng kiến trúc) nào đó – Ví dụ lệnh máy MIPS trên viết lại bằng hợp ngữ cho MIPS-32bit: add $8, $9, $10 – Ví dụ lệnh máy x86 trên viết lại bằng hợp ngữ cho x86-32bit: add ECX, EAX 2 Ví dụ chương trình hợp ngữ MIPS-32bit .data # data segment str: .asciiz ”hello asm” .text # text segment .globl main main: addi $v0, $0, 4 # 4 = print str syscall la $a0, str # load address of string syscall # execute the system call 3 Ví dụ chương trình hợp ngữ x86-32bit global _WinMain@16 extern _MessageBoxA@16 [section .data] title db "Message",0 message db "Hellow World!",0 [section .code] _WinMain@16: push 0 push title push message push 0 call _MessageBoxA@16 ret 16 4 Trình biên dịch hợp ngữ • Chương trình viết bằng hợp ngữ phải được dịch bởi trình biên dịch hợp ngữ (assembler) trước khi máy tính có thể hiểu được nó • Với một dòng bộ vi xử lí (cùng kiến trúc) – cũng có nghĩa là với một ngôn ngữ máy xác định (tập lệnh máy gần giống nhau) – có thể tồn tại nhiều trình biên dịch hợp ngữ của nhiều nhà cung cấp khác nhau, chạy trên các hệ điều hành khác nhau. • Ví dụ: cùng là kiến trúc x86, nhưng có .
đang nạp các trang xem trước