微機筆記(三)---------Pentium指令系統
阿新 • • 發佈:2021-01-15
Pentium指令系統:
傳送指令:
所有通用傳送類指令都不改變標誌位
典型錯誤:
CS,IP不能作為目的運算元 MOV CS, AX
兩個段暫存器間不能直接傳送 MOV SS, DS
立即數不能直接傳送給段暫存器 MOV DS,2000H
記憶體單元間不能直接傳送 MOV [SI], [2000H]
立即數不能作為目的運算元 MOV 1000H, AX
例題:
堆疊操作指令:
push是先減後壓
pop是先彈後加:圖略~
注意:
例題:
交換指令:
格式:XCHG OPRD1,OPRD2 功能:(OPRD1) (OPRD2)
例如: XCHG BL,AH
XCHG AX,[BX]
1)記憶體之間的資料、累加器之間不可相互交換
2) CS,IP不能參與交換
3)段暫存器和立即數不能作為一個運算元
輸入輸出指令:
在對輸入輸出埠的定址方式有 兩種:直接(0~ 255,即FFH),間接(0~65535,即FFFFH)。
IN AL,40H ; 將40埠的字讀入AL (只能用累加器作為執行I/O過程的機構,而不能是其他暫存器)
IN AX,40H ;將40埠的字讀入AL,41埠的讀入AH
OUT 40H,AX ;將AX中的內容輸出到40H 41H埠
OUT 40H,AL ; 將AL中的字輸出到40H埠
當埠地址大於8位(OFFH)時,要用DX間接定址 (且只能用DX,而不能用其它暫存器)。
MOV DX,352H
IN AL,DX
MOV DX, 400H
OUT DX,AL 每次I/O指令傳送的位元組數取決於累加器
地址傳送指令:
LEA LDS LES LSS LFS LGS
LEA AX,[3820] ; 將有效地址3820送到AX,執行後AX=3820
LEA指令的作用的是目的暫存器在記憶體中的有效地址而不是記憶體單元中的值,以上傳送指令