日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...

發布時間:2023/12/4 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机组成原理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数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。