Thứ Bảy, 1 tháng 6, 2013

Định nghĩa dữ liệu trong Assembly

1. Các kiểu dữ liệu nội tại (Intrinsic Data Types)

MASM định nghĩa các kiểu dữ liệu nội tại, mỗi kiểu dữ liệu như vậy mô tả một tập hợp các giá trị có thể gán được cho các biến (variables) và các biểu thức (expressions) của một kiểu cho trước. Đặc tính quan trọng của mỗi kiểu là kích thước của nó tính theo bits: 8, 16, 32, 48, 64, và 80. Các đặc tính khác (như là dấu (signed), con trỏ(pointer), và dấu chấm động (floating-point) ) là tùy chọn và là chủ yếu cho lợi ích của programmers những người muốn được nhắc nhở về kiểu dữ liệu được tổ chức trong biến. Cho ví dụ, một biến được khai báo với như là DWORD, về logic thì giữ một giá trị nguyên 32-bit không dấu (unsigned 32-bit integer). Nhưng sự thực, nó có thể giữ một giá trị nguyên có dấu (signed 32-bit integer), một số thực 32-bit với độ chính xác đơn (32-bit single precision real) hoặc là là một con trỏ 32-bit (32-bit pointer). Assembler không phân biệt chữ hoa thường, vì vậy một directive ví dụ như là DWORD có thể được viết như là dword, Dword, dWORD và các trường hợp khác nữa.

Trong bảng 1, tất cả các kiểu dữ liệu dính dáng đến các số nguyên ngoại trừ 3 kiểu cuối cùng. Trong những kiểu trên, kí hiệu IEEE liên quan đến các định dạng chuẩn của số thực được công bố bởi IEEE Computer Society.

Bảng 1:
Kiểu
BYTE        :số nguyên 8-bit không dấu. B viết tắt cho Byte
SBYTE      :số nguyên 8-bit có dấu. S viết tắt cho Signed
WORD      : số nguyên 16-bit không dấu (còn có thể là con trỏ Near trong chế độ địa chỉ thực )
SWORD    : số nguyên 16-bit có dấu
DWORD   : số nguyên 32-bit không dấu (còn có thể là con trỏ Near trong chế độ địa chỉ thực). D viết tắt cho Double
SDWORD : số nguyên 32-bit có dấu. SD viết tắt cho Signed Double
FWORD    : số nguyên 48-bit không dấu ( con trỏ Far trong chế độ được bảo vệ)
QWORD   : số nguyên 64-bit. Q viết tắt của Quad
TBYTE     : số nguyên 80-bit (10-byte). T là viết tắt của Ten-byte
REAL4     : số thực 32-bit (4-byte) ngắn theo chuẩn IEEE
REAL8     : số thực 64-bit (8-byte) dài theo chuẩn IEEE
REAL10   : số thực 80-bit (10-byte) theo chuẩn IEEE

2. Các câu lệnh định nghĩa dữ liệu (Data Definition Statement)

một câu lệnh định dành một nơi lưu trữ trong bộ nhớ cho một biến, với một tên tùy chọn. Các câu lệnh định nghĩa dữ liệu tạo các biến dựa trên các kiểu dữ nội tại như trong bảng. Các định nghĩa dữ liệu tuân theo cú pháp sau:

    [tên] chỉ thị khởi tạo [, khởi tạo]...

Đây là một ví dụ của câu lệnh định nghĩa dữ liệu:
    count DWORD 12345

Tên: phải tuân theo các quy tắc trong assembly
chỉ thị (Directive) directive trong một câu lệnh định nghĩa dữ liệu có thể là BYTE, WORD, DWORD, SBYTE, SWORD hay bất cứ kiểu dữ liệu nào có trong bảng. Thêm vào đó, nó có thể có bất cứ các chỉ thị định nghĩa dữ liệu kế thừa được hiển thị trong bảng 2, cung cấp bởi Netwide Assembler (NASM) và Turbo Assembler (TASM) 

Bảng 2: các chỉ thị kế thừa

     DB : số nguyên 8 bit
     DW: số nguyên 16 bit
     DD: số nguyên 32 bit hoặc số thực
     DQ: số nguyên

Không có nhận xét nào:

Đăng nhận xét