?

移位寄存器及算術運算應用

2018-03-22 01:31梁偉
電子技術與軟件工程 2018年1期
關鍵詞:左移右移觸發器

梁偉

寄存器被廣泛應用于數字電路和計算機中,是由具有存儲功能的觸發器構成的,移位寄存器在移位脈沖作用下依次逐位右移或左移,通過proteus模擬軟件進行直觀分析移位寄存器移位功能,移位功能可應用于CPU內部寄存器進行算術運算。

【關鍵詞】移位寄存器 CPU算術運算

1 移位寄存器

寄存器被廣泛應用于數字電路和計算機中,是由具有存儲功能的觸發器構成的。移位寄存器具有代碼寄存和移位兩個功能,在移位脈沖的作用下,數碼如向左移一位,則稱為左移,反之稱為右移。移位寄存器具有單向移位功能的稱為單向移位寄存器,即可向左移也可向右移的稱為雙向移位寄存器。

2 移位寄存器的算術運算

如圖1所示為由D觸發器組成的4位串行輸入-并行輸出左移位寄存器,圖中各觸發器的CP接在一起作為移位脈沖控制端(CP脈沖同步控制),數據從最低位觸發器D輸入,前一觸發器輸出端和后一觸發器D端連接。

由于CP接在一起作為脈沖控制端,當第1個CP脈沖上升沿到來時,D1觸發器輸出Q1是根據輸入數據D改變,D2觸發器Q2輸出是根據Q1數據改變,D3觸發器Q3輸出是根據Q2數據改變,D4觸發器Q4輸出是根據Q3的數據改變。單向右移寄存器移位過程如下:

(1)清零,只要=0,觸發器直接置0。

(2)接收數據,當=1時,第1個CP脈沖后,輸入信號d4d3d2d1=1101左移1位,寄存器狀態從高位到低位為Q4Q3Q2Q1=0001。

(3)第2個CP脈沖后,輸入信號d4d3d2d1=1101在移2位,寄存器狀態為Q4Q3Q2Q1=0011。

(4)第3個CP脈沖后,輸入信號d4d3d2d1=1101在移3位,寄存器狀態為Q4Q3Q2Q1=0110。

(5)第4個CP脈沖后,輸入信號d4d3d2d1=1101在移4位,寄存器狀態為Q4Q3Q2Q1=1101。

即在四個CP脈沖作用后,數碼d4d3d2d1=1101恰好全部左移位串行輸入寄存器,寄存器輸出狀態從高位到低位為Q4Q3Q2Q1=1101從四個觸發器的輸出端并行輸出,完成串行輸入--并行輸出。要完成向右移位的串行輸入--串行輸出的寄存功能,還需要加入四個CP脈沖,才能完成寄存器中的1101依次移出,即8個CP脈沖完成串行輸入-串行輸出。

寄存器移位功能可應用于CPU進行算術運算,80X86 CPU內部寄存器可以分為程序可見的寄存器和程序不可見的寄存器兩大類:程序可見的寄存器分為段寄存器(CS,DS,ES,SS);數據寄存器AX,BX,CX,DX等。數據寄存器用來存放計算的結果和操作數,AX累加器,BX基址寄存器,CX計數器,DX數據寄存器,每個寄存器又有它們各自的專用目的。AX,BX,CX,DX都是16位的寄存器,每一個又可以分為高8位和低8位來使用,AH高8位,AL低8位。

移位指令實現對操作數移位,包括算術移位指令、邏輯移位指令和循環移位指令。SHL和SAL指令的功能相同,使用這組指令除了可以實現基本的移位操作外,還可以用于對一個數進行2n的倍增運算,算術左移和邏輯左移指令SAL(SHL)格式與功能。

(1)格式:SHL (SAL)OPR,CNT;對一個無(有)符號數的進行2n的倍增。

(2)功能:將OPR向左移動CNT指定的次數,最低位補入0,CF內容為OPR最后移出位的值。

(3)操作數的類型:OPR目標操作數 通用寄存器;存儲器。源操作數:1;CL。

(4)標志:根據結果設置ZF,SF,PF,OF,CF;AF未定義。

(5)編寫匯編程序:設(AL)=0000 1101B=13=0DH,則執行5次左移指令后,(AL)=?

data segment

FIRST DW ?

data ends

code segment

assume cs:code, ds:data

start: MOV AX, DATA

MOV DS, AX

XOR AX,AX

mov al,13

shl al,1

shl al,1

shl al,1

shl al,1

shl al,1

mov ah,4ch

int 21h

code ends

end start

D:\ASMSTU~1\SOURCE\OUT>debug shl.exe

-ucs:0

1638:0000 B82F16 MOV AX,162F

………

AX=0000 BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

1638:0007 B00D MOV AL,0D // (AX)=0000H

-t //單步運行(以下相同)

AX=000D BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

1638:0009 D0E0 SHL AL,1 // (AX)=000DH=13

AX=001A BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

1638:000B D0E0 SHL AL,1 // (AX)= 001AH=26

AX=0034 BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

1638:000D D0E0 SHL AL,1 // (AX)= 0034H=52

AX=0068 BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

1638:000F D0E0 SHL AL,1 // (AX)= 0068H=104

AX=00D0 BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

DS=162F ES=161F SS=1630 CS=1638 IP=0011 OV UP EI NG NZ NA PO NC

1638:0011 D0E0 SHL AL,1 // (AX)= 00D0H=208 ,CY=0

AX=00A0 BX=0000 CX=0353 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000

DS=162F ES=161F SS=1630 CS=1638 IP=0013 NV UP EI NG NZ NA PE CY

1638:0013 B44C MOV AH,4C // (AX)= 00A0H=160 , CY=1

經過匯編程序調試運行,觀察到(AL)=13,每執行1次左移指令,(AL)×2,執行5次左移指令后,(AX)=00A0H=160,CY=1,有進位,256+160=416,即13×32=416。SHL指令功能是可以用于對一個數進行2n倍增運算,使用這種方法比直接使用乘除法效率要高得多。

參考文獻

[1]閻石主編.數字電子技術基礎[R].清華大學電子教研組,2011.

[2]沈美明,溫冬嬋.IBM-PC匯編語言程序設計[D].清華大學,2013.

作者單位

大連計算機職業中專 遼寧省大連市 116034

猜你喜歡
左移右移觸發器
華容道玩法大解密
太極拳養生八式(上)
主從JK觸發器邏輯功能分析
使用觸發器,強化安全性
BMH2C單模匹配算法的研究與改進
對觸發器邏輯功能轉換的分析
觸發器邏輯功能轉換的兩種方法
開懷一笑
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合