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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

3.2.1 數(shù)據(jù)傳送指令

1. MOVOPRD1,OPRD2

MOV是操作碼,OPRD1和OPRD2分別是目的操作數(shù)和源操作數(shù)。該指令可把一個字節(jié)或一個字操作數(shù)從源地址傳送到目的地址。

源操作數(shù)可以是累加器、寄存器、存貯器以及立即操作數(shù),而目的操作數(shù)可以是累加器、寄存器和存貯器。數(shù)據(jù)傳送方向的示意圖,如圖3.13所示。

各種數(shù)據(jù)傳送指令例舉如下:

(1)在CPU各內(nèi)部寄存器之間傳送數(shù)據(jù)(除代碼段寄存器CS和指令指針I(yè)P以外)。

MOV AL,BL

MOV DL,CH 8位數(shù)據(jù)傳送指令(1個字節(jié))

MOV AX,DX

MOV CX,BX

MOV DX,BX } 16位數(shù)據(jù)傳送指令(1個字)

MOV DX,ES

MOV BX,DI

MOV SI,BP

(2)立即數(shù)傳送至CPU的內(nèi)部通用寄存器(即AX、BX、CX、DX、BP、SP、SI、DI),給這些寄存器賦值。

MOV CL, 4;8位數(shù)據(jù)傳送(1個字節(jié))

MOV AX,03FFH;16位數(shù)據(jù)傳送

MOV S1,057BH; 16位數(shù)據(jù)傳送(1個字)

(3)CPU內(nèi)部寄存器(除了CS和IP以外)與存貯器(所有尋址方式)之間的數(shù)據(jù)傳送,與前述一樣可以傳送一個字節(jié)也可以傳送一個字。

·在CPU的通用寄存器與存貯器之間傳送數(shù)據(jù):

MOV AL, BUFFER

MOV AX,[SI]

MOV,[DI] CX

MOV SI, BLOCK[BP]

·在CPU寄存器與存貯器之間傳送數(shù)據(jù):

MOV DS,DATA[SI+BX]

MOV DEST[BP+DI],ES

例如,為了將在同一個段內(nèi)的偏移地址為AREA1的數(shù)據(jù)傳送到偏移地址為AREA2單元中去,就需要執(zhí)行以下兩條傳送指令:

MOV AL,AREA1

MOV AREA2,AL

如果要求將內(nèi)存中一個數(shù)據(jù)塊搬移到另一個內(nèi)存數(shù)據(jù)區(qū)中時,例如要將以AREA1為首地址的100個字節(jié)數(shù)據(jù)搬移到以AREA2為首地址的內(nèi)存中去,可以

用有循環(huán)控制的數(shù)據(jù)傳送程序來實現(xiàn)。為此采用間接尋址方法,用SI存放源數(shù)據(jù)地址,DI存放目的數(shù)據(jù)地址,用CX作為循環(huán)計數(shù)控制單元。

其程序如下:

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

目的??? 源

交換指令把一個字節(jié)或一個字的源操作數(shù)與目的操作數(shù)相交換。這種交換能在通用寄存器與累加器之間、通用寄存器之間、通用寄存器與存貯器之?間進行,

但是段寄存器不能作為一個操作數(shù),例如:

XCHG AL,CL

XCHG AX,DI

XCHG BX,SI

XCHG AX,BUFFER

XCHG BX,DATA[SI]

3. 地址傳送指令

8088有3條地址傳送指令。

(1)LEA指令

例如:

LEA OPRD1,OPRD2

該指令把源操作數(shù)OPRD2的地址偏移量傳送至目的操作 數(shù)OPRD1中。源操作數(shù)必須是一個內(nèi)存操作數(shù),目的操作數(shù)必須是一個16位的通用寄存器。

這條指令通常用來建立串指令操作所需的寄存器指針。

例如:LEA BX,BUFR是把變量BUFR的地址偏移量送到BX中。

(2) LDS指令

該指令完成一個地址指針的傳送。地址指針包括段地址和地址偏移量。指令執(zhí)行時,將段地址送入DS,地址偏移量送入一個16位的指針寄存器或變址寄存器。

例如:LDS SI,[BX]是把BX所指的32位地址指針的段地址送入DS,偏移地址送入SI。

(3) LES指令

這條指令除將地址指針的段地址送入ES外,其他操作與LDS的類似。

例如:?LES DI,[BX+CONT]是把BX+CONT所指的32位地址指針的段地址送入ES,偏移地址送入DI4.堆棧操作指令

堆棧是內(nèi)存中的一個特定區(qū)域,由SS的內(nèi)容和SP的內(nèi)容來決定。對堆棧的操作具有先入后出的特點。用于堆棧操作的指令主要是:

PUSH OPRD(壓入堆棧指令)???????????????????????????????????????????????? ?POP? OPRD(彈出堆棧指令)

堆棧操作指令中的操作數(shù)可以是段寄存器(除CS)的內(nèi)容、16位的通用寄存器(標志寄存器有專門的出入棧指令)以及內(nèi)存的16位字,例如,

MOV? AX,8000H

MOV? SS,AX

MOV? SP,2000H

MOV? DX,3E4AH

PUSH DX

PUSH AX

當執(zhí)行完兩條壓入堆棧的指令時,堆棧中的內(nèi)容如圖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的內(nèi)容總是指向堆棧的頂。

4. 字節(jié)、字轉(zhuǎn)換指令

有一條指令能將AL的符號位(bit7)擴展到整個AH中,它就是CBW,即將字節(jié)轉(zhuǎn)換成一個字。

例如,

MOV AL,4FH

CBW

在執(zhí)行完CBW之后,AX=004FH。另一條指令是將AX的符號位(bit15)擴展到整個DX,它就是CWD,即將字轉(zhuǎn)換成雙字。

例如,

MOV AX,834EH

CWD

執(zhí)行完CWD之后,DX=FFFFH,DXAX=FFFF834EH

總結(jié)

以上是生活随笔為你收集整理的计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。