第3章80x86指令系统和寻址方式1.数据传送指令-Mov dest,src; dest ← src段寄存器CS, DS, ES, SS;通用R之间MOV AL,BL通用寄存器*MOV SI, BXAX, BX,CX, DXMOV MEM BYTE.20H:M←立即数立即数BP, SP.SI DIM0VDS:J0005HI,4500HMOVAL,20H;通用R←立即数存储器MOV SP,2000HMOVAL,DS:[1000HI;通用R和M之间MOV ES:[0200H,BX;段R和M之间MOV ES, [BX]M0V [1000H],CS;通用R和段R之间MOV AX, ESMOV DS,AX11
11 1. 数据传送指令 ◼ MOV dest, src ; dest src MOV AL, BL ; 通用R之间 MOV SI, BX MOV MEM_BYTE, 20H ; M 立即数 MOV DS:[0005H], 4500H MOV AL, 20H ; 通用R 立即数 MOV SP, 2000H MOV AL, DS:[1000H] ; 通用R和M之间 MOV ES:[0200H], BX MOV ES, [BX] ; 段R和M之间 MOV [1000H], CS MOV AX, ES ; 通用R和段R之间 MOV DS, AX 第3章 80x86指令系统和寻址方式 通用寄存器 AX, BX, CX, DX BP, SP, SI, DI 段寄存器 CS, DS, ES, SS 存储器 立即数
第3章80x86指令系统和寻址方式XCHGdest,src; dest src;通用R之间XCHG AL, BLXCHG BX, CXXCHGDS:[2200HI,DX;通用R和M之间IN/OUTIN AL/AX, i8/DXOUT i8/DX,AL/AXIN AL, 21HMOV DX,201HIN AX, DXOUT 22H,ALMOV DX.511HOUT DX,AX12
12 ◼ XCHG dest, src ; dest src XCHG AL, BL ; 通用R之间 XCHG BX, CX XCHG DS:[2200H], DX ; 通用R和M之间 ◼ IN/OUT IN AL/AX, i8/DX OUT i8/DX, AL/AX IN AL, 21H MOV DX, 201H IN AX, DX OUT 22H, AL MOV DX, 511H OUT DX, AX 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式LEAr16,memLEA BX,DS:[1000HLEA BX,BUFFERLEA BX,[2728]LEA SP,[BPI[D]]下列2条指令等价:LEA BX,VARWORDMOVBX,OFFSETVARWORDLDS/LESr16,mem32LDS DI,[2130H]; DI ←[2130H],DS←[2132H]EXDWORDDD12345678HLDS SI, EXDWORD; DS ←1234H, SI← 5678H13
13 ◼ LEA r16, mem LEA BX, DS:[1000H] LEA BX, BUFFER LEA BX, [2728] LEA SP, [BP][DI] 下列2条指令等价: LEA BX,VARWORD MOV BX, OFFSET VARWORD ◼ LDS/LES r16, mem32 LDS DI, [2130H] ; DI [2130H], DS [2132H] EXDWORD DD 12345678H LDS SI, EXDWORD ; DS 1234H, SI 5678H 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式LAHF/SAHFLAHF; AH←FLAGS7-0SAHF; FLAGS- ←AHXLATXLAT labelXLAT; AL ← (DS:BX+AL)例3.31SUB AL,'0'LDS BX, TAB POINTXLAT XMITTABLEOUT 42H,ALTABLE POINTDDXMIT TABLEXMIT TABLEDB579136802414
14 ◼ LAHF/SAHF LAHF ; AH FLAGS7~0 SAHF ; FLAGS7~0 AH ◼ XLAT XLAT label XLAT ; AL (DS:BX+AL) 例 3.31 SUB AL, '0' LDS BX, TAB_POINT XLAT XMIT_TABLE OUT 42H, AL TABLE_POINT DD XMIT_TABLE XMIT_TABLE DB '5791368024' 第3章 80x86指令系统和寻址方式
第3章80x86指令系统和寻址方式PUSH/POPPUSH srcPOP destPUSH AXPUSH [2000HPOP AXPOPM ADDCBWICWD--ConvertBytetoWord/ConyertWordtoDoubleword(sign-extendofAL/AX符号扩展)MOV AL,6FHCBW;AH=00H,AL=6FHMOV AL,0AFHCBW;AH-0FFH,AL=0AFHMOV AX,4F0AHCWD; DX=0000H,AX=4F0AHMOV AX,0EFOAHCWD:DX-0FFFFH,AX-0EFOAH15
15 ◼ PUSH/POP PUSH src POP dest PUSH AX PUSH [2000H] POP AX POP M_ADD ◼ CBW/CWD——Convert Byte to Word/Convert Word to Doubleword (sign-extend of AL/AX符号扩展) MOV AL, 6FH CBW ; AH=00H, AL=6FH MOV AL, 0AFH CBW ; AH=0FFH, AL=0AFH MOV AX, 4F0AH CWD ; DX=0000H, AX=4F0AH MOV AX, 0EF0AH CWD ; DX=0FFFFH, AX=0EF0AH 第3章 80x86指令系统和寻址方式