Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
1,93 MB
Nội dung
Chương 66 :: Toán Toán tử tử –– Toán Toán hạng hạng -Chương phép phép định định địa địa chỉ –– Tập Tập lệnh lệnh Chương 6 :: Toán Toán tử tử –– Toán Toán Chương hạng -hạng phép phép định định địa địa chỉ –– Mục tiêu Tập lệnh lệnh Tập Hiểu cách dùng toán tử ASM Nắm tập lệnh CPU 8086/8088 Biết cách định địa thông qua toán hạng Biết vận dụng kỹ vào vấn đề cần giải thực thành chương trình 03/28/21 Chuong Cac phep dinh vi dia chi Toán tử Điểm quan trọng phân biệt toán tử lệnh : Toán tử điều khiển tính toán trị xác định lúc dịch Lệnh điều khiển tính toán trị không xác định CT thực Ex : toán tử + điều khiển phép cộng dịch Lệnh cộng ADD điều khiển phép cộng chương trình thực 03/28/21 Chuong Cac phep dinh vi dia chi Toán tử số học Toán tử + * / MOD + SHL SHR 03/28/21 Cú pháp Công dụng + expression - expression Dương exp1*exp2 exp1/exp2 Nhân exp1 mod exp2 exp1 + exp2 Phần dư exp1 - exp2 exp shl n Trừ Dịch exp sang trái n bit exp shr n Dịch exp sang phải n bit m Chia Cộng Chuong Cac phep dinh vi dia chi Toán tử logic Not And Not expression Exp1 and exp2 Or Xor Exp1 or exp2 Exp1 xor exp2 Ex : MOV AH , OR AND MOV AL, NOT (20 XOR 0011100B) 03/28/21 Chuong Cac phep dinh vi dia chi Toán Tử Quan Hệ So sánh biểu thức cho trị true (-1) điều kiện toán tử thỏa, ngược lại false EQ Exp1 EQ exp2 NE Exp1 NE exp2 LT LE GT 03/28/21 GE True neáu Exp1 = exp2 True neáu Exp1 exp2 Exp1 LT exp2 True neáu Exp1 < exp2 Exp1 LE exp2 True neáu Exp1 exp2 Chuong Cac phep dinh vi dia chi Exp1 GE exp2 True neáu Exp1 >= ĐỘ ƯU TIÊN Độ ưu tiên giảm dần TỬ TOÁN MÔ TẢ TỬ () Dấu ngoặc +,Dấu dương , aâm * / MOD Nhaân , chia, Modulus +, - 03/28/21 TOÁN Cộng, trừ Chuong Cac phep dinh vi dia chi Toán tử SEG Cú pháp : SEG expression Cho địa đoạn biểu thức expression Expression biến | nhãn | tên segment hay toán hạng nhớ khác 03/28/21 Chuong Cac phep dinh vi dia chi Toán tử OFFSET Cú pháp : OFFSET expression Cho địa OFFSET biểu thức expression Expression biến | nhãn | tên segment hay toán hạng trực tiếp nhớ khác Ex : nạp địa segment offset biến table vaøo DS :AX TABLE DB ? MOV AX, SEG TABLE MOV DS, AX Cac phep dinh vi dia chi MOV DX, OFFSETChuong Table 03/28/21 TOÁN TỬ $ Cho địa OFFSET phát biểu chứa toán tử $ Thường dùng để tính chiều dài chuổi 03/28/21 Chuong Cac phep dinh vi dia chi 10 Taäp lệnh Lệnh MOV : Ý nghóa : copy giá trị từ toán hạng nguồn Cú pháp : MOV dest , source Yêu cầu : Dest source kiểu Dạng lệnh : MOV reg , reg MOV mem , reg MOV reg, mem MOV reg16, segreg MOV segreg, reg16 MOV reg, immed MOV mem, immed MOV mem16, segreg MOV segreg, mem16 03/28/21 Chuong Cac phep dinh vi dia chi 27 Minh hoạ lệnh MOV MOV AX, CX MOV DL, BH MOV [SI+1000h], BP ; [SI+1000h, SI+1001h] MOV DX, [1000h] ; DX [1000h, 1001h] MOV DI, 12h MOV AL, 12h MOV BYTE PTR [1000h], 12h MOV WORD PTR [2000h] , 1200h MOV [BX] , DS MOV SS, [2000h] 03/28/21 Chuong Cac phep dinh vi dia chi BP 28 Chú ý Lệnh MOV không làm ảnh hưởng đến cờ Không thể chuyển liệu trực tiếp toán hạng nhớ với nhau, muốn chuyển phải dùng ghi trung gian Không thể chuyển giá trị tức thời vào ghi đoạn, muốn chuyển phải dùng ghi trung gian Không thể chuyển trực tiếp ghi đoạn 03/28/21 Chuong Cac phep dinh vi dia chi 29 Minh họa lệnh MOV Ex1 : Cho table mảng gồm 10 phần tử dạng byte Table DB 3,5,6,9,10, 29,30,46,45,90 Truy xuất phần tử đầu , phần tử thứ thứ mảng: MOV AL, TABLE hay MOV AL, TABLE[0] MOV AL, TABLE+1 hay MOV AL, TABLE+4 03/28/21 MOV AL, TABLE[1] hay MOV AL, TABLE[4] Chuong Cac phep dinh vi dia chi 30 Minh họa lệnh MOV Ex2 : MOV AX, DS : [100h] ; chép nội dung 16 bit địa 100h đoạn DS vào Reg Ex3 : MOV AX, [100h] ; chuyển NỘI DUNG Ơ NHỚ 100h vaøo R 03/28/21 Chuong Cac phep dinh vi dia chi 31 Áp dụng trình chuyển nội dung vùng nhớ bắt đầu đ hớ có địa bắt đầu 1000h Biết chiều m ytes liệu khảo sát đoạn g nhớ MEM có chiều dài bytes gồm ký tự ‘ ïn DS ơng trình đảo ngược vùng nhớ MEM 03/28/21 Chuong Cac phep dinh vi dia chi 32 Leänh LEA (Load Effective Address) Cú pháp : LEA REG | MEM nghóa : nạp địa Offset vào ghi để khởi động Re Ex : MOV DX, OFFSET MES Tương đương với LEA DX, MES Ex : LEA BX, [1000h] ; BX 1000h LEA SI, [DI][BX][2000h] ; SI 03/28/21 DI + BX + 2000h Chuong Cac phep dinh vi dia chi 33 Lệnh XCHG (XCHANGE) Cú pháp : XCHG DEST , SOURCE ghóa : hoán chuyển nội dung Reg, Reg ô n Yêu cầu : toán hạng phải kiểu ùn hạng biến nhớ Muốn ho đổi trị biến phải dùng Reg trung gian Ex : XCHG AH, BL MOV VAR1, VAR2 ; không hợp lệ, phải dùng Reg taïm 03/28/21 Chuong Cac phep dinh vi dia chi 34 Lệnh PUSH Cú pháp : PUSH REG16 PUSH MEM16 PUSH SEGREG Đẩy toán hạng nguồn 16 bit vào STACK Ex : PUSH DI ; [SS :SP+1, SS :SP] DI Ex : PUSH CS ; [SS :SP+1, SS :SP] CS 03/28/21 Chuong Cac phep dinh vi dia chi 35 Lệnh POP Cú pháp : POP REG16 POP MEM16 POP SEGREG Lấy liệu từ đỉnh STACK vào toán hạng địch Ex : POP AX ; AX [SS :SP+1, SS :SP] Ex : POP [BX+1] ; [BX+2, BX+1] 03/28/21 [SS :SP+1, SS :SP] Chuong Cac phep dinh vi dia chi 36 Lệnh IN Cú pháp : IN ACCUM, IMMED8 IN ACCUM, DX liệu từ cổng xuất nhập vào ghi tích Trường hợp AX nhập byte thấp trước, byte c Ex : IN AL ,61h Dạng lệnh có Reg DX dùng Để cho cổng có địa chæ 16 bit Ex : MOV DX, 378H IN AX, 40h IN AL, DX 03/28/21 Chuong Cac phep dinh vi dia chi 37 SUMMARY Dùng DEBUG để hợp dịch chạy chương trình sau : Chép số nguyên kiểu Word địa 0120h vào địa 0130h Cho biết giá trị AX sau lệnh sau thực thi : MOV AX, ARRAY1 INC AX ADD AH, SUB AX, ARRAY1 …… ARRAY1 DW 10h, 20h 03/28/21 Chuong Cac phep dinh vi dia chi 38 SUMMARY Giả sử biến VAL1 địa offset 0120h PTR1 địa 0122h Cho biết giá trị ghi AX, BX lệnh sau thực thi : CODE MOV AX, @DATA MOV DS, AX MOV AX, MOV AL, BYTE PTR VAL1 ; AX = ? MOV BX, PTR1 ; BX = ? XCHG AX, BX ; BX = ? SUB AL,2 ; AX = ? MOV AX, PTR2 ; AX = ? DATA VAL1 DW 3Ah PTR1 DW VAL1 PTR2 DW PTR1 03/28/21 Chuong Cac phep dinh vi dia chi 39 Cho biết giá trị ghi bên phải, lệnh đoạn chương trình sau thực thi Giả sử FIRST offset 0H MOV AL, BYTE PTR FIRST+1 AL = ; MOV BX, WORD PTR SECOND+2 ; BX = MOV DX, OFFSET FIRST + ; DX = MOV AX, 4C00H INT 21H …… FIRST DW 1234h SECOND DW 16385 Chuong Cac phep dinh vi dia chi 03/28/21 40 Bài tập Lập trình Bài : Viết chương trình nhập ký tự Hiển thị ký tự đứng trước ký tự đứng s thứ tự mã ASCII Kết có dạng : Nhập ký tự : B Ký tự đứng trước : A Ký tự đứng sau : C Bài : Viết chương trình nhập ký tự hiể mã ASCII tổng mã ký tự nhập Kết có dạng : 03/28/21 Chuong Cac phep dinh vi dia chi 41 ...Chương 6 :: Toán Toán tử tử –– Toán Toán Chương hạng -hạng phép phép định định địa địa chỉ –– Mục tiêu Tập lệnh lệnh Tập Hiểu cách dùng toán tử ASM Nắm tập lệnh CPU 8086/8088 Biết cách định địa thông... hạng Toán hạng (Operand) oán hạng nơi chứa liệu cho lệnh , ch lệnh Assembly có đối số Có số lệnh có toán hạng RET, CLC Với lệnh toán hạng toán hạng thứ toán hạng nguồn (source) – chứa liệu địa. .. chi Cơ chế định vị địa Cách xác định liệu lệnh gọi chế định vị địa (addressing mode) nơi cất liệu Cơ chế chia làm loại : định vị ghi, giá trị tức thời nhớ MOV AL, BL ; định vị ghi Toán hạng