Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
167,61 KB
Nội dung
Chương6 NHÓM LỆNH CHUYỂN DỮ LiỆU Lệnhchuyểndữliệu • MOV • XCHG • PUSH • POP • XLAT • LEA • LAHF • SAHF • PUSHF • POPF • IN • OUT LệnhMOV • MOV reg, reg • MOV reg, mem • MOV reg, const • MOV mem, reg • MOV mem, const MOV đích, nguồn ; đích ß nguồn Đíchvànguồnphảicùngkíchthước LệnhXCHG, PUSH, POP XCHG XCHG đ đ í í ch ch , , ngu ngu ồ ồ n n ; ; đ đ í í ch ch ßà ßà ngu ngu ồ ồ n n PUSH PUSH to to á á nh nh ạ ạ ng ng ; ; đư đư a a to to á á n n h h ạ ạ ng ng lên lên đ đ ỉ ỉ nh nh stack stack POP POP to to á á nh nh ạ ạ ng ng ; ; l l ấ ấ y y gi gi á á tr tr ị ị trên trên đ đ ỉ ỉ nh nh stack stack (16bit) (16bit) (16bit) PUSH PUSH POP POP Vídụ1 •Chobiếtnộidung cácthanhghiAX,BX,CX saukhithựchiện đoạnchươngtrìnhsau: MOVAX, 05ABh MOVBX,1 XCHGBH,BL MOVCX,BX XCHGAL, CL AX = ?BX= ?CX = ? Vídụ1 (t.t) MOVAX, 05ABh MOVBX,1 XCHGBH,BL MOVCX,BX XCHGAL, CL ; AX: 05 AB AH AL ; BX: 00 01 ; BX: 01 00 ; CX: 01 00 ; AX: 05 00 ; CX: 01 AB AX = 0500hBX= 0100hCX = 01ABh Vídụ2 •Chobiếtnộidung cácthanhghiAX,BX,CX saukhithựchiện đoạnchươngtrìnhsau: MOV AX, 05A0h PUSHAX XCHGAH, AL PUSHAX POPBX POPCX AX = ?BX= ?CX = ? Vídụ2 MOV AX, 05A0h PUSHAX XCHGAH, AL PUSHAX POPBX POPCX ; AX: 05 A0 ; 05A0 à stack 05A0 ; AX: A0 05 ; A005 à stack A005 ; BX: A0 05 ; CX: 05 A0 LệnhXLAT • Translate – •“Dịch”giátrị trong AL thành giátrị mớitrong bảngtạivịtríxác định theo độ dờibằng AL – • Ứng dụng để chuyển đổisốliệu • Cúpháp: XLAT – •‘Input’: • •BX chứa địachỉ bảng dữ liệu • •AL chứabyte cần đổi – •‘Output’: • •AL chứagiátrị tìm thấytrongbảng tại địachỉ BX+AL LệnhXLAT(t.t.) • Vídụ đổisốthập phân <16 ra kítựHEXA • •Khai báo bảng kítự Bangkytu DB ‘0123456789ABCDEF’ • •Thựchiện: MOV AL, 10 ;Nhậpsốcần đổivàoAL vídụ=10 ;thựchiện đổi: MOV BX, offset Bangkytu ;lấy địachỉ bảng dữ liệu XLAT ;AL chứakítự ‘A’ [...].. .Lệnh IN • Cú pháp: IN AL,immed8 IN AL,DX IN AX,immed8 IN AX,DX • Ý nghĩa : đọc một giá trị 8bit hoặc 16bit từ cổng – Dạng lệnh có immed8 dùng trong trường hợp địa chỉ cổng xuất nhập 8 bit – Dạng lệnh có thanh ghi DX dùng cho trường hợp địa chỉ cổng 16 bit Lệnh IN (t.t) • Ví dụ đọc từ cổng có số hiệu 8bit: IN AL ,61 h IN AX,40h đọc từ cổng có số hiệu 16bit: MOV DX,378h IN AL,DX Lệnh OUT • Dạng lệnh. .. • Giải thích : [cổng IO] ← thanh ghi tích lũy Xuất dữ liệu từ thanh ghi bộ tích lũy AL hoặc AX ra cổng xuất nhập có địa chỉ 8 bit là số tức thời immed8 hay có địa chỉ 16 bit trong thanh ghi DX Lệnh OUT (t.t) OUT 20h,AL MOV DX,2F8h OUT DX,AL Lệnh LEA • • • • Dạng lệnh : LEA reg 16, mem Giải thích : thđ ← địa chỉ Nạp địa chỉ hiệu dụng vào thanh ghi 16 bit Ví dụ : LEA LEA BX,[1000h] ; BX ← 1000h SI,[DI][BX][2000h]... 1000h SI,[DI][BX][2000h] ; SI ← DI+BX+2000h Bài tập 1 Nhập đoạn chương trình trong Debug hoán đổi nội dung hai vùng nhớ gồm 5 byte Vùng nhớ thứ nhất ở địa chỉ DS:100h, vùng nhớ thứ hai ở địa chỉ DS:120h 2 Viết chương trình hoàn chỉnh dạng COM hoặc EXE cho phép nhập một chuỗi gồm đúng 5 ký tự In ra màn hình chuỗi này theo thứ tự đảo ngược 3 Viết chương trình hoàn chỉnh dạng COM hoặc EXE cho phép nhập một... chuoi db 6, ?,7 DUP('$') • • moinhap db "Nhap vao chuoi gom 5 ki tu: $" • ketqua db 13,10,"Chuoi sau khi dao: $" • end start • • • • mov al,byte ptr [100h] mov bl,byte ptr [120h] xchg al,byte ptr [120h] xchg bl,byte ptr [100h] • • • • mov ax,word ptr [100h] mov bx,word ptr [120h] xchg ax,word ptr [120h] xchg bx,word ptr [100h] • • • • • • • • • • • • • ;dang EXE model small data chuoi db 16, ?,17 DUP('$')... • • • • • • • • ;dang EXE model small data chuoi db 16, ?,17 DUP('$') moinhap db "Nhap vao chuoi toi da 15 ki tu: $" ketqua db 13,10,"Chuoi vua nhap: $" soluong db 13,10,"So luong ki tu(he 16) : $" bang db "01234 567 89ABCDEF" code main: mov ax,@data mov ds,ax • mov dx, offset moinhap • mov ah,9 • int 21h • ;nhap chuoi • mov dx, offset chuoi • mov ah,0ah • int 21h • ; • mov dx,offset ketqua • mov ah,9... chuoi+2 • mov ah,9 • int 21h • ; • mov dx,offset soluong • mov ah,9 • int 21h • ;tinh so ki tu • mov bx,offset bang • mov al,[chuoi+1] ; lay so ki tu vua nhap • xlat ; tra trong bang de doi sang ma ASCII • ; • mov ah,2 • mov dl,al • int 21h • ; • ;exit • mov ah,4ch • int 21h • end main . Chương6 NHÓM LỆNH CHUYỂN DỮ LiỆU Lệnhchuyểnd liệu • MOV • XCHG • PUSH • POP • XLAT • LEA • LAHF • SAHF • PUSHF • POPF • IN • OUT LệnhMOV • MOV reg, reg • MOV reg,. đọcmộtgiátrị 8bit hoặc16bit từ cổng – Dạng lệnh cóimmed8 dùng trong trường hợp địa chỉ cổng xuất nhập 8 bit. – Dạng lệnh cóthanh ghi DX dùng cho trường hợp địa chỉ cổng 16 bit. LệnhIN (t.t) • Vídụ. 8bit: IN AL ,61 h IN AX,40h đọc từ cổng cósốhiệu 16bit: MOV DX,378h IN AL,DX LệnhOUT • Dạnglệnh: OUT immed8,accum OUT DX,accum • Giảithích: [cổngIO] ← thanhghitíchlũy Xuất dữ liệu từ thanh