Danh mục

Bài giảng Assembler: Bài 3 - GV.ThS. Phạm Nguyên Văn

Số trang: 36      Loại file: pdf      Dung lượng: 33.11 MB      Lượt xem: 22      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 11,000 VND Tải xuống file đầy đủ (36 trang) 0
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Assembler: Bài 3 do GV. ThS. Phạm Nguyên Văn trình bày, gồm các nội dung về mô hình bộ nhớ, toán tử và biểu thức, các toán tử type và size, lệnh enum của borland tasm và lệnh jmp và loop. Chúc bạn học tốt.
Nội dung trích xuất từ tài liệu:
Bài giảng Assembler: Bài 3 - GV.ThS. Phạm Nguyên VănGV: Ths. Phạm Nguyên Văn Lệnh .model lựa chọn mô hình bộ nhớ.  Tiny: Mã và DL phối hợp < 64K.  Small: Mã  Biểu thức là tổ hợp các toán tử và toán hạng được trình biên dịch chuyển thành một giá trị đơn lẻ. 3 1000h * 50h ; = 50000h -4 + 2 ; = -6 count + 2 ; số đếm là 1 hằng 31 MOD 6 ; = 16 / 4 ;=1 ‘2’ – 30h ; = 2(do giá trị của ‘2’ = 32h) 4Toán tử Cấp Mô tả() 1 Dấu ngoặc đơn+,- 2 Dương và Âm (đơn tử)*, /, mod 3 nhân, chia, lấy phần dư+,- 4 Cộng, trừ 5 OFFSET trả về vị trí của 1 nhãn và biến từ đầu phân đoạn của nó. Toán hạng đích phải là 1 thanh ghi 16bit:  VD: mov bx, offset count ; BX trỏ đến count offset có thể được chuyển đến 1 thanh ghi chỉ mục hoặc cơ số. Trong ví dụ sau, bList mặc định nằm tại offset 0000: 6 .data bList db 10h, 20h, 30h, 40h wList dw 1000h, 2000h, 3000h .code mov di, offset bList ; dl = 0000 mov bx, offset bList + 1 ; bx = 0001 mov si, offset wList+2 ; si = 0006 7 Toán tử SEG trả về phần phân đoạn của 1 nhãn hoặc địa chỉ của biến. Thường được dùng khi biến nằm trong 1 phân đoạn khác với phân đoạn hiện do DS trỏ đến VD: đẩy [push] giá trị hiện thời của DS lên stack, ấn định DS theo phân đoạn chứa array, và sau đó phục hồi DS theo giá trị ban đầu của nó 8 push ds ; lưu DS mov ax,seg array ; ấn định ds theo phân đoạn của mảng mov ds, ax mov bx, offset array ; tìm độ dịch vị mảng … ;xử lý mảng pop ds ; phục hồi ds 9 PTR: chạy đè lên kích cỡ ngầm định của một toán hạng. Phát biểu rõ kích cỡ của toán hạng. Phải được kết hợp với các kiểu dữ liệu chuẩn: BYTE, SBYTE, WORD, DWORD, SDWORD, FWORD, QWORD, TBYTE. VD:  mov al,byte ptr count  mov ax, word ptr newVal  mov eax,dword ptr listPointer 10 Do kích cỡ của toán hạng không được rõ ràng xét theo ngữ cảnh 1 lệnh. VD:  inc [bx] ; toán hạng gián tiếp  báo lỗi do không biết bx chứa byte hay word inc byte ptr [bx]: xác định rõ kích cỡ của toán hạng là byte Có thể chạy đè kích cỡ ngầm định của toán hạng. 11 Vd: ta có từ kép 32bit, muốn nạp từ cao vào DX, từ thấp vào AX: .data val32 dd ? .code mov ax, val32 ; có từ thấp (error) mov dx, val32+2 ; có từ cao (error) Sửa lại:  mov ax, word ptr val32 ; AX = 1234h  mov dx, word ptr val32+2 ; DX = 5678h 12 LABEL: chèn 1 nhãn và gán cho nó 1 thuộc tính kích cỡ, mà không phân bổ bộ nhớ. VD: khai báo 1 nhãn trước khi val32 gọi val16, và gán thuộc tính word: .data val16 label word val32 dd 12345678h .code mov ax,val16 mov dx,val32 13 EVEN và EVENDATA: căn thẳng hàng lệnh kế tiếp trong đoạn mã theo offset 16bit đều. Vd: 1 lệnh NOP 1-byte (90h) được chèn vào mã đã biên dịch nơi even xuất hiện. Lệnh tiếp theo nằm tại 0006: 0000 mov ax,@data 0003 mov ds, ax 0005 even ; byte chứa 90h được chèn ở đây 0006 mov bx, offset array 14 Tương tự với evendata, chèn 1 byte rỗng (0) vào trước array: 0000 .data 0000 str1 db 3 dup(‘X’) 0003 evendata 0004 array dw 10 dup(0FFFFh) 15 Toán tử SHORT:  thường sử dụng với JMP khi thực hiện nhảy ngắn khoảng  .data var1 db 20h var2 dw 1000h var3 dd ? var4 db 10,20,30,40,50 msg db ‘File not found’,0 .code L1: mov ax,type var1 ;ax = 0001 mov ax,type var2 ;ax = 0002 mov ax,type var3 ;ax = 0004 mov ax,type var4 ;ax = 0001 mov ax,type msg ;ax = 0001 mov ax,type L1 ;ax = FFFF 17 Toán tử length: đếm số lượng các thành phần riêng lẻ trong 1 biến được định nghĩa bằng dup. Nếu không dùng dup, length = 1. Nếu dùng dup lồng ghép, chỉ toán tử phía ngoài mới được đếm. 18 .data val1 dw 1000h val2 db 10,20,30 array dw 32 dup(0) array2 dw 5 dup(3 dup(0)) message db ‘File not found’,0 .code mov ax,length val1 ; = 1 mov ax,length val2 ; = 1 mov ax,length array; = 32 mov ax,length array2 ;=5 mov ax,length message ;=1 ...

Tài liệu được xem nhiều: