Microsoft PowerPoint VXL Ch02 Z80 Tap lenh NEW [Compatibility Mode] 23 Mar 11 1 Z80 Tập lệnh ĐHBK Tp HCM Khoa Đ ĐT BMĐT GVPT Hồ Trung Mỹ Môn học Vi Xử Lý 1 Hợp ngữ và Mã máy • Ngôn ngữ gợi nhớ (Mnemon[.]
23-Mar-11 ĐHBK Tp HCM-Khoa Đ-ĐT BMĐT GVPT: Hồ Trung Mỹ Môn học: Vi Xử Lý Z80 Tập lệnh Hợp ngữ Mã máy • Ngơn ngữ gợi nhớ (Mnemonic language) = hợp ngữ (assembly language) • Ngơn ngữ máy (Machine language) = mã máy (machine code) • TD: org 1000h LD A, 20 Mnemonic Machine Code LD A, 20 3EH , 14H Address 1000H 1001H Op_code (mã lệnh) Operand (toán hạng) 1002H Content Memory 3EH 14H Op_code Operand 1003H 23-Mar-11 Cấu trúc lệnh Mọi lệnh gồm có mã lệnh cần, phần địa (các) toán hạng OP-Code Address(es) Operand(s) OP-Code Z80 thường Byte (ngoại trừ tác vụ dùng ghi số mã lệnh chiếm byte) Số địa chỉ: R1 op R2 (A) op R (A1) op (A2) (A1) op (A2) → R3 → R → R → (A3) Chú ý: (A): nd A, op: tác vụ, →: chuyển, A: địa chỉ, R: ghi nh nh byte nh byte nh Lệnh nh byte Lệnh nh byte Lệ Lệ Op_code Op_code Operand1 Op_code Operand1 Op_code1 Op_code2 Op_code2 Operand2 Operand2 Operand1 Operand2 Operand2 Các ký hiệu dùng tập lệnh • • • • • d = độ dời (số có dấu bit = -128 +127) n = số bit nn = số 16 bit r,r’ = ghi bit dd, qq, ss, rr = ghi 16 bit 23-Mar-11 Các nhóm lệnh • Chuyển liệu (data transfer Group) • Số học Logic (Arithmetic and Logical Group) • Xoay dịch (Rotate and Shift Group) • Rẽ nhánh (Branch Group) • Điều khiển ngăn xếp, I/O máy (Stack, I/O, and Machine Contol Group) • Trao đổi, chuyển khối tìm kiếm (Exchange, Block Transfer, and Search Group) • Xử lý bit (Bit Manipulation Group) Chú ý: • Z80 có 158 lệnh 10 cách định địa Nhóm chuyển liệu • Dạng tổng quát: LD op1, op2 – Sao chép nội dung toán hạng (op2) vào toán hạng (op1) – toán hạng phải chiều dài (8 hay 16 bit) – Có nhiều cách định địa cho toán hạng – toán hạng op1 khơng thể số • Chỉ có toán hạng: với stack – PUSH rp -> cất nội dung ghi 16 bit vào stack qua trỏ SP – POP rp -> lấy nội dung phần tử đỉnh stack (qua trỏ SP) cất vào ghi 16 bit 23-Mar-11 Nhóm chuyển liệu – Nạp số cho ghi • Nạp số bit cho ghi bit: LD r, n • Nạp số 16 bit cho ghi 16 bit: LD rr, n LD r, n LD rr, n A BC B { } DE C LD D ,n E H L LD { } HL SP , nn IX IY TD: Nạp số bit cho ghi • TD: LD A,-24; decimal LD A,15; decimal binary LD A,0F7H; hex LD A, ‘B’; ASCII LD A, 11001010b; LD A, 123Q ; Octal • TD: Hãy viết mã máy cho lệnh LD A,-24 • ĐS: Tra tập lệnh ta thấy lệnh có byte opcode sau: ( r = A = 111, n = -24 = bù 24 = ECh) Như mã máy là: byte = 00111110 = 3Eh byte = ECh 23-Mar-11 TD: Nạp số 16 bit cho ghi 16 bit (cặp ghi bit) • TD: • LD HL,-24 LD B, ‘A’ LD DE, 11001010b LD C, ‘8’ ; BC = ‘A8’ LD SP,3FFFH LD IX, 1234h TD: Hãy viết mã máy cho lệnh LD HL,-24 -24 biểu diễn sang số 16 bit bù FF E8h Như mã máy là: byte = 0010 0001 = 21h byte = E8h byte = FFh Nhóm chuyển liệu – Sao chép ghi • Sao chép nội dung ghi bit (r r’) : LD r, r’ • Sao chép nội dung ghi 16 bit (SP rr): LD SP, rr LD r, r’ LD LD SP, rr A A B B { },{ } C C D D E E H H L L TD: LD A, A LD E, L { } HL LD SP, IX IY TD: LD SP, HL LD SP, IX 10 23-Mar-11 Nhóm chuyển liệu – Đọc/ghi nhớ liệu bit • • Đọc nhớ: liệu bit cất vào ghi bit với trỏ ghi 16 bit rp HL, IX,và IY: LD r, (HL) LD r, (IX+d) LD r, (IY+d) Riêng với r = A có thêm: LD A,(BC) LD A,(DE) LD A,(nn) Ghi vào nhớ: nội dung ghi bit (r) liệu bit (n) với trỏ ghi 16 bit rp HL, IX,và IY: LD (HL), r LD (HL), n LD (IX+d), r LD (IX+d), n LD (IY+d), r LD (IY+d), n Riêng với r = A có thêm: LD (BC),A LD (DE),A LD (nn), A • • Chú ý: • r ghi A, B, C, D, E, H L • (rp) : định địa gián tiếp qua ghi HL, BC, DE • (IX+d) hay (IY+d) : định địa chỉ số với d số có dấu bit tra bảng • (nn) : định địa trực tiếp 11 TD: Đọc/ghi nhớ liệu bit • TD: LD A,(9000H); mã máy 3AH,00H,90H Memory A 33H 33H 8000H 3AH 8001H 00H 8002H 90H 8003H 9000H p Sao ché OP_code Operand Operand 33H • TD: LD A,(HL); mã máy 7Eh HL 90H 00H 90H 00H A 56H 56H Memory 8000H 7EH 8001H 9000H 56H OP_code 12 23-Mar-11 TD: Đọc/ghi nhớ liệu bit – Tra bảng • TD: LD A,(IX + 3) có mã máy DDH,7EH,03H Memory A ABH IX 90H 90H 00H IX + 9000H 9000H + d 03H 03H = 9003H 9003H 8000H DDH 8001H 7EH 8002H 03H 9000H 56HH 9001H 78H 9002H 9AH 9003H ABH OP_code OP_code Operand • Với sơ đồ trên, cho biết nội dung ghi A sau thực thi lệnh sau: LD IX,9003H LD A,(IX-2) 13 Nhóm chuyển liệu – Đọc/ghi nhớ liệu 16 bit • • Đọc nhớ: liệu 16 bit cất vào ghi 16 bit với địa 16 bit: LD rp, (nn) nghĩa rp_L (nn) rp_H (nn+1) Định địa hiểu ngầm qua SP: POP rp Nghĩa rp_L (SP), SP SP + rp_H (SP), SP SP + • • Ghi vào nhớ: liệu 16 bit (ở ghi 16 bit rp) với địa 16 bit: LD (nn),rp nghĩa (nn) rp_L (nn+1) rp_H Định địa hiểu ngầm qua SP: PUSH rp Nghĩa SP SP – 1, (SP) rp_H SP SP – 1, (SP) rp_L Chú ý: 15 87 • rp_L byte thấp rp rp_H byte cao rp rp • rp ghi 16 bit: BC, DE, HL, SP, IX, IY • (nn) : định địa [trực tiếp] mở rộng (vì liệu 16 bit) rp_H rp_L 14 23-Mar-11 TD: Đọc/ghi nhớ liệu 16 bit có mã máy EDH, 4BH, 00H, 90H • LD BC, (9000H) BC 34H 34H 56H 56H 9000H 9001H Memory 56H 34H có mã máy EDH, 43H, 00H, 90H • LD (9000H), BC BC 56H 78H 78H 9000H 9001H Memory 78H 56H • PUSH BC có mã máy C5H (giả sử trước thực thi: SP = FEFDH) Memory BC 56H 78H SP FEFBH FEFAH FEFBH 78H FEFCH 56H FEFDH 15 16 23-Mar-11 17 Nhóm số học logic Đa số lệnh thuộc nhóm ảnh hưởng đến cờ (mã điều kiện) ghi F (Flag) • S (Sign) : sau phép tốn S=MSB kết quả=1(âm)/0(dương) • Z (Zero) : kết Z=1, ngược lại Z=0 • H (Half carry) : số nhớ vị trí bit thứ phép tốn +/• P/V (Parity/Overflow) (kiểm tra chẵn lẻ/tràn trên) –P (với phép toán Logic): (nếu số bit A chẵn = Even parity), ngược lại P/V= 0(Odd) –V (với phép toán số học): = có tràn với phép tốn +/• N: 1(sub)/0(add) • C (Carry): số nhớ vị trí bit thứ phép tốn +/18 23-Mar-11 2.1 Nhóm số học bit Phép toán Dạng lệnh Ý nghĩa Cộng ADD A,source A A + source Cộng có nhớ ADC A,source A A + source + C Trừ SUB source A A – source (A hiểu ngầm) Trừ có mượn SBC A,source A A – source – C So sánh CP source Thực A – source để đặt cờ Tăng thêm INC source source source + Giảm bớt DEC source source source – Chú ý: • source số, ghi bit (A,B,C,D,E,H,L) , (HL), (IX+d), (IY+d) • Các lệnh INC DEC: source khơng số Cờ C không bị ảnh hưởng 19 • Cờ N = sau lệnh SUB, SBC, DEC TD: Cộng/trừ bit ; Định nghĩa số NUM1 EQU 25 ; NUM1 = 19H NUM2 EQU -17 ; NUM2 = EFH (bù 17) ; Thử lệnh ADD với toán hạng bit LD A,NUM1 LD B,NUM2 ADD A,B ; A A + B = 25 + (-17) = ; Thử lệnh SUB với toán hạng bit LD A,NUM1 LD B,NUM2 SUB B ; A A - B = 25 - (-17) = 42 20 10