计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...
3.2.1 數據傳送指令
1. MOVOPRD1,OPRD2
MOV是操作碼,OPRD1和OPRD2分別是目的操作數和源操作數。該指令可把一個字節或一個字操作數從源地址傳送到目的地址。
源操作數可以是累加器、寄存器、存貯器以及立即操作數,而目的操作數可以是累加器、寄存器和存貯器。數據傳送方向的示意圖,如圖3.13所示。
各種數據傳送指令例舉如下:
(1)在CPU各內部寄存器之間傳送數據(除代碼段寄存器CS和指令指針IP以外)。
MOV AL,BL
MOV DL,CH 8位數據傳送指令(1個字節)
MOV AX,DX
MOV CX,BX
MOV DX,BX } 16位數據傳送指令(1個字)
MOV DX,ES
MOV BX,DI
MOV SI,BP
(2)立即數傳送至CPU的內部通用寄存器(即AX、BX、CX、DX、BP、SP、SI、DI),給這些寄存器賦值。
MOV CL, 4;8位數據傳送(1個字節)
MOV AX,03FFH;16位數據傳送
MOV S1,057BH; 16位數據傳送(1個字)
(3)CPU內部寄存器(除了CS和IP以外)與存貯器(所有尋址方式)之間的數據傳送,與前述一樣可以傳送一個字節也可以傳送一個字。
·在CPU的通用寄存器與存貯器之間傳送數據:
MOV AL, BUFFER
MOV AX,[SI]
MOV,[DI] CX
MOV SI, BLOCK[BP]
·在CPU寄存器與存貯器之間傳送數據:
MOV DS,DATA[SI+BX]
MOV DEST[BP+DI],ES
例如,為了將在同一個段內的偏移地址為AREA1的數據傳送到偏移地址為AREA2單元中去,就需要執行以下兩條傳送指令:
MOV AL,AREA1
MOV AREA2,AL
如果要求將內存中一個數據塊搬移到另一個內存數據區中時,例如要將以AREA1為首地址的100個字節數據搬移到以AREA2為首地址的內存中去,可以
用有循環控制的數據傳送程序來實現。為此采用間接尋址方法,用SI存放源數據地址,DI存放目的數據地址,用CX作為循環計數控制單元。
其程序如下:
MOV SI,OFFSETAREA1
MOV DI,OFFSETAREA2
MOV CX,100
AGAIN: MOV AL,[SI]
MOV,[DI] AL
INC SI
INC DI
DEC CX
JNZ AGAIN
2. 交換指令
XCHG OPRD1,OPRD2
目的??? 源
交換指令把一個字節或一個字的源操作數與目的操作數相交換。這種交換能在通用寄存器與累加器之間、通用寄存器之間、通用寄存器與存貯器之?間進行,
但是段寄存器不能作為一個操作數,例如:
XCHG AL,CL
XCHG AX,DI
XCHG BX,SI
XCHG AX,BUFFER
XCHG BX,DATA[SI]
3. 地址傳送指令
8088有3條地址傳送指令。
(1)LEA指令
例如:
LEA OPRD1,OPRD2
該指令把源操作數OPRD2的地址偏移量傳送至目的操作 數OPRD1中。源操作數必須是一個內存操作數,目的操作數必須是一個16位的通用寄存器。
這條指令通常用來建立串指令操作所需的寄存器指針。
例如:LEA BX,BUFR是把變量BUFR的地址偏移量送到BX中。
(2) LDS指令
該指令完成一個地址指針的傳送。地址指針包括段地址和地址偏移量。指令執行時,將段地址送入DS,地址偏移量送入一個16位的指針寄存器或變址寄存器。
例如:LDS SI,[BX]是把BX所指的32位地址指針的段地址送入DS,偏移地址送入SI。
(3) LES指令
這條指令除將地址指針的段地址送入ES外,其他操作與LDS的類似。
例如:?LES DI,[BX+CONT]是把BX+CONT所指的32位地址指針的段地址送入ES,偏移地址送入DI4.堆棧操作指令
堆棧是內存中的一個特定區域,由SS的內容和SP的內容來決定。對堆棧的操作具有先入后出的特點。用于堆棧操作的指令主要是:
PUSH OPRD(壓入堆棧指令)???????????????????????????????????????????????? ?POP? OPRD(彈出堆棧指令)
堆棧操作指令中的操作數可以是段寄存器(除CS)的內容、16位的通用寄存器(標志寄存器有專門的出入棧指令)以及內存的16位字,例如,
MOV? AX,8000H
MOV? SS,AX
MOV? SP,2000H
MOV? DX,3E4AH
PUSH DX
PUSH AX
當執行完兩條壓入堆棧的指令時,堆棧中的內容如圖3.14所示。
由圖3.14可以解釋壓入堆棧的過程:
①SP-1→SP
②DH→(SP)
③SP-1→SP
④DL→(SP)
這就是把DX壓入堆棧的過程。AX的壓棧過程是一樣的。
出堆棧的過程與此剛好相反,例如POPAX:
①(SP)→AL
②SP+1→SP
③(SP)→AH
④SP+1→SP
可見,SP的內容總是指向堆棧的頂。
4. 字節、字轉換指令
有一條指令能將AL的符號位(bit7)擴展到整個AH中,它就是CBW,即將字節轉換成一個字。
例如,
MOV AL,4FH
CBW
在執行完CBW之后,AX=004FH。另一條指令是將AX的符號位(bit15)擴展到整個DX,它就是CWD,即將字轉換成雙字。
例如,
MOV AX,834EH
CWD
執行完CWD之后,DX=FFFFH,DXAX=FFFF834EH
總結
以上是生活随笔為你收集整理的计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 试卷代号6098计算机应用基础,2231
- 下一篇: 高考610考哪个计算机学校,2019年高