• 沒有找到結果。

轉換十六進制數字為七段顯示碼

N/A
N/A
Protected

Academic year: 2022

Share "轉換十六進制數字為七段顯示碼"

Copied!
6
0
0

加載中.... (立即查看全文)

全文

(1)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.1

第7章 綜合程式設計

轉換十六進制數字為七段顯示碼

a b d c e f g

(a) 七段LED顯示器 (b) 顯示器數碼編碼格式 7 6 5 4 3 2 1 0 位元 0 g f e d c b a 數碼

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.2

第7章 綜合程式設計

轉換十六進制數字為七段顯示碼

輸入 g f e d c b a 十六進制 輸入 g f e d c b a 十六進制

0 0 1 1 1 1 1 1 3F 8 1 1 1 1 1 1 1 7F

1 0 0 0 0 1 1 0 06 9 1 1 0 1 1 1 1 6F

2 1 0 1 1 0 1 1 5B A 1 1 1 0 1 1 1 77

3 1 0 0 1 1 1 1 4F B 1 1 1 1 1 0 0 7C

4 1 1 0 0 1 1 0 66 C 0 1 1 1 0 0 1 39

5 1 1 0 1 1 0 1 6D D 1 0 1 1 1 1 0 5E

6 1 1 1 1 1 0 1 7D E 1 1 1 1 0 0 1 79

7 0 0 0 0 1 1 1 07 F 1 1 1 0 0 0 1 71

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.3

第7章 綜合程式設計

MCS-51表格轉換指令

指令 動作 CY AC OV P

MOVC A,@A+DPTR A ← (A+DPTR) - - - *

MOVC A,@A+PC A ← (A+PC) - - - *

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.4

第7章 綜合程式設計

十六進制數字對七段顯示器數碼轉換程式

1 ;ex7.1-1.a51 ---- 2 DSEG AT 30H

0030 3 CDATA: DS 1 ;data to be converted 4 ;table translation

---- 5 CSEG AT 0000H

0000 E530 6 TBLCVT: MOV A,LOW CDATA ;get cdata 0002 900009 7 MOV DPTR,#TABLE ;load table base 0005 93 8 MOVC A,@A+DPTR ;address and 0006 F530 9 MOV LOW CDATA,A ;convert it 0008 22 10 RET

11 ;define convertion table

0009 3F06 12 TABLE: DB 3FH,06H ;hexadecimal to 000B 5B4F 13 DB 5BH,4FH ;seven segment 000D 666D 14 DB 66H,6DH ;LED display 000F 7D07 15 DB 7DH,07H ;conversion table

....

0017 7971 19 DB 79H,71H 20 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.5

第7章 綜合程式設計

十六進制數字對七段顯示器數碼轉換程式

1 ;ex7.1-2.a51 ---- 2 DSEG AT 30H

0030 3 CDATA: DS 1 ;data to be converted 4 ;table translation

---- 5 CSEG AT 0000H

0000 E530 6 TBLCVT: MOV A,LOW CDATA ;get cdata 0002 3100 7 ACALL TABLECVT

0004 F530 8 MOV LOW CDATA,A ;convert it 0006 22 9 RET

10 ;define convertion table and associated 11 ;subroutine

0100 12 ORG 0100H

0100 04 13 TABLECVT: INC A ;bypass RET instruction 0101 83 14 MOVC A,@A+PC

0102 22 15 RET

0103 3F06 16 DB 3FH,06H ;hexadecimal to 0105 5B4F 17 DB 5BH,4FH ;seven segment

....

0111 7971 23 DB 79H,71H 24 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.6

第7章 綜合程式設計

二進制對BCD轉換

BCDNO =b7×27+b6×26+b5×25+b4×24+b3×23

+b2×22+b1×21+b0×20

=[[[[[[[0+b7]×2+b6]×2+b5]×2+b4]×2+b3]×

2 +b2]×2+b1]×2+b0

(2)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.7

第7章 綜合程式設計

二進制對BCD轉換

演算法:二進制對 BCD 轉換 輸

輸 輸

輸入入入入::::待轉換的二進制數目 BINNO 輸

輸 輸

輸出出出出:::: BCD 數目 BCDNO BEGIN::::

1.清除 BCDNO 為 0 ,並設定 COUNT 為 BINNO 的位元數目;

2. REPEAT

2.1左移 BINNO 一個位元位置,使其 MSB 進入進位旗號位元 CY

內;

2.2以十進制(BCD)的算術運算計算:

BCDNO = BCDNO × 2 + CY 2.3計數器 COUNT 減 1 UNTIL COUNT == 0 END {二進制對 BCD 轉換演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.8

第7章 綜合程式設計

二進制對BCD轉換

1 ;ex7.1-3.a51 ---- 2 DSEG AT 30H

0010 3 COUNT EQU 16 ;# of BINNO bits 0003 4 NBCD EQU 3 ;# of BCDNO bytes

5 ;define BCDNO, low byte in low adddress.

0030 6 BCDNO: DS NBCD ;BCD number 7 ;define BINNO, low byte in low address 0033 8 BINNO: DS COUNT/8 ;binary number

9 ;

10 ;BINARY to BCD conversion 11 ;

---- 12 CSEG AT 0000H 0000 E4 13 BINBCD: CLR A ;clear A 0001 7830 14 MOV R0,#LOW BCDNO 0003 7903 15 MOV R1,#NBCD ;set loop count 0005 F6 16 CLRBCD: MOV @R0,A ;clear BCDNO 0006 08 17 INC R0

0007 D9FC 18 DJNZ R1,CLRBCD 19 ;convert binary to bcd.

0009 7A10 20 MOV R2,#COUNT;set loop count 000B C3 21 LOOPN: CLR C ;clear carry

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.9

第7章 綜合程式設計

二進制對BCD轉換

22 ;shift binno msb into carry 000C 7833 23 MOV R0,#LOW BINNO 000E 7902 24 MOV R1,# COUNT/8 0010 E6 25 SFTBIN: MOV A,@R0 ;multiple precision 0011 33 26 RLC A ;rotation left 0012 F6 27 MOV @R0,A ;with carry 0013 08 28 INC R0 ;point to next byte 0014 D9FA 29 DJNZ R1,SFTBIN

30 ;multiple precision BCD addition 0016 7903 31 MOV R1,#NBCD ;get bcd digit no 0018 7830 32 MOV R0,#LOW BCDNO;setup pointer 001A E6 33 BCDADD: MOV A,@R0 ;carry out conversion 001B 35E0 34 ADDC A,ACC ;a <- a * 2 + C 001D D4 35 DA A ;decimal adjust 001E F6 36 MOV @R0,A ;save the result 001F 08 37 INC R0 ;point to the next byte 0020 D9F8 38 DJNZ R1,BCDADD

0022 DAE7 39 DJNZ R2,LOOPN;repeat COUNT times 0024 22 40 RET

41 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.10

第7章 綜合程式設計

BCD對二進制轉換

0

3876 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1

0 0 1 1 0 0 1 1

- -

0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1938

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.11

第7章 綜合程式設計

BCD對二進制轉換

演算法: BCD 對二進制轉換 輸輸

輸輸入入入入::::待轉換的 BCD 數目 BCDNO 輸

輸 輸

輸出出出出::::二進制數目 BINNO BEGIN::::

1. 清除 BINNO 為 0 ,並設定 COUNT 為 BINNO 的位元數目;

2. REPEAT

2.1 右移 BCDNO 一個位元位置,使其 LSB 進入進位旗號位元

CY 內,然後調整 BCDNO 使其維持除以 2 的特性;

2.2 將進位旗號位元 CY 移入 BINNO 的 MSB 內;

2.3 計數器 COUNT 減 1 UNTIL COUNT == 0 END {BCD 對二進制轉換演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.12

第7章 綜合程式設計

BCD對二進制轉換

1 ;ex7.1-5.a51 ---- 2 DSEG AT 30H

0010 3 COUNT EQU 16 ;# of BINNO bits 0003 4 NBCD EQU 3 ;# of BCDNO bytes 5 ;define BCDNO, low byte in low address 0030 6 BCDNO: DS NBCD ;BCD number 7 ;define BINNO, low byte in low address 0033 8 BINNO: DS COUNT/8 ;binary number

9 ;

10 ;BCD to BINARY conversion 11 ;

---- 12 CSEG AT 0000H

0000 7A10 13 BINBCD: MOV R2,#COUNT ;set loop count 0002 7903 14 LOOPN: MOV R1,#NBCD ;get bcd digit no 0004 C3 15 CLR C ;clear carry

16 ;point to BCDNO

0005 7832 17 MOV R0,#BCDNO+NBCD-1 0007 E6 18 SFTBCD: MOV A,@R0 0008 13 19 RRC A ;divide by 2 0009 C0D0 20 PUSH PSW ;save carry

(3)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.13

第7章 綜合程式設計

BCD對二進制轉換

000B 30E303 21 JNB ACC.3,CONT ;adjust 000E C3 22 CLR C ;if > 08 000F 9403 23 SUBB A,#03H ;subtract 03H 0011 30E703 24 CONT: JNB ACC.7,NEXT ;adjust 0014 C3 25 CLR C ;if > 80H 0015 9430 26 SUBB A,#30H ;subtract 30H 0017 F6 27 NEXT: MOV @R0,A 0018 18 28 DEC R0

0019 D0D0 29 POP PSW ;restore carry 001B D9EA 30 DJNZ R1,SFTBCD ;repeat NBCD times

31 ;shift CY into BINNO

001D 7834 32 MOV R0,#BINNO+COUNT/8-1 001F 7902 33 MOV R1,#COUNT/8 0021 E6 34 SFTBIN: MOV A,@R0 ;shift CY 0022 13 35 RRC A ;into BINNO 0023 F6 36 MOV @R0,A 0024 18 37 DEC R0 0025 D9FA 38 DJNZ R1,SFTBIN

0027 DAD9 39 DJNZ R2,LOOPN ;repeat count times 0029 22 40 RET

41 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.14

第7章 綜合程式設計

浮昇排序演算法

例題 7.2-1 (浮昇排序演算法數值例)

  依上述方法將下列資料項排列成遞增次序:

23H , 02H , 14H , 78H , 15H , 52H , 40H , 80H 解

解 解

解::::(a) 02H , 14H , 23H , 15H , 52H , 40H , 78H , 80H (b) 02H , 14H , 15H , 23H , 40H , 52H , 78H , 80H (c) 02H , 14H , 15H , 23H , 40H , 52H , 78H , 80H 在第二次迴路後資料已經排序完成。

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.15

第7章 綜合程式設計

浮昇排序演算法

演算法:浮昇排序 輸輸

輸輸入入入入:::待排序的資料陣列 TDATA: 輸輸

輸輸出出出出:::排序完成的資料陣列 TDATA: BEGIN::::

1.設定交換旗號 XCHG 為 ON ; 2. WHILE (交換旗號 XCHG 為 ON) DO

2.1 設定 COUNT 為 N,並設定資料陣列指標 i 為 0 而交換旗號 XCHG 為 OFF ;

2.2 REPEAT

2.2.1 IF TDATA(i) > TDATA(i + 1) THEN TDATA(i)與 TDATA(i + 1)交換,並設定交換旗號 XCHG 為 ON

2.2.2 陣列指標 i 加 1 ,計數器 COUNT 減 1 UNTIL COUNT == 0

END {WHILE}

END {浮昇排序演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.16

第7章 綜合程式設計

浮昇排序演算法

1 ;ex7.2-2.a51 ---- 2 DSEG AT 30H

0008 3 DSIZE EQU 08H ;array size 0030 4 TDATA: DS DSIZE ;testing data

5 ;

6 ;BUBBLE sorting algorithm 7 ;

---- 8 CSEG AT 0000H

0000 7830 9 BUBSORT: MOV R0,#LOW TDATA;point to TDATA 0002 7931 10 MOV R1,#LOW TDATA+1

0004 7A08 11 MOV R2,#DSIZE ;set loop count 0006 75F000 12 MOV B,#00H ;clear exchange flag 0009 E6 13 CMPXCHG: MOV A,@R0 ;get test data 000A C3 14 CLR C ;clear carry flag 000B 97 15 SUBB A,@R1 ;compare 000C 4006 16 JC NEXT ;if larger 000E E6 17 MOV A,@R0 ;restore A 000F C7 18 XCH A,@R1 ;exchange 0010 F6 19 MOV @R0,A 0011 43F001 20 ORL B,#01H ;set flag

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.17

第7章 綜合程式設計

浮昇排序演算法

0014 08 21 NEXT: INC R0 ;point to the next 0015 09 22 INC R1 ;two items

0016 DAF1 23 DJNZ R2,CMPXCHG;repeat DSIZE times 0018 E5F0 24 MOV A,B ;if exchange in the last 001A 70E4 25 JNZ BUBSORT;iteration, continue 001C 22 26 RET

27 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.18

第7章 綜合程式設計

二分搜尋演算法

例題 7.2-3 (二分搜尋演算法)

  使用下列資料項,並以尋找資料項 52H 為例,說明搜尋演算法的動作。

     02H , 14H , 15H , 23H , 40H , 52H , 78H , 80H 解解解

解::::在二分搜尋演算法中,必須計算中間的資料項的指標值,即 mid = (low +

high)/2 ,然後比較資料項 TDATA(mid)與欲找尋的資料項 KEY ,比較的結果有 下列三種可能:

1. 若 KEY = TDATA(mid),則欲找尋的資料項已經找到;

2. 若 KEY > TDATA(mid),則設定 low ← mid + 1(即 KEY 必在表格下半部);

3. 若 KEY < TDATA(mid),則設定 high ← mid - 1(即 KEY 必在表格上半部)。

依此方式進行,在第二次比較時, TDATA(mid) = 52H(KEY),因此結束。

(4)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.19

第7章 綜合程式設計

二分搜尋演算法

演算法:二分搜尋 輸輸

輸輸入入入入::::欲搜尋的資料陣列 TDATA 與資料項 KEY 輸

輸 輸

輸出出出出::::資料項 KEY 在資料陣列 TDATA 中的指標(index) BEGIN::::

1. 設定搜尋範圍的下限 low 為 0 ,上限 high 為 N - 1(N 為 TDATA 所包含 的資料項數目),並設定指標 search 為-1(先假設找不到);

2. WHILE (low ≤ high) DO 2.1 計算 mid = (high + low)/2 ;

2.2 IF KEY = TDATA(mid) THEN 設定 search = mid 並結束。

2.3 IF KEY < TDATA(mid) THEN 設定 high = mid - 1 ELSE 設定 low = mid + 1

END {WHILE}

END {浮昇排序演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.20

第7章 綜合程式設計

二分搜尋演算法

1 ;ex7.2-4.a51 ---- 2 DSEG AT 30H

0008 3 ARRAYS EQU 08H ;size of tdata 0030 4 KEY: DS 1 ;key value 0031 5 KINDEX: DS 1 ;index of key 0032 6 LOPTR: DS 1 ;low bound 0033 7 HIPTR: DS 1 ;high bound 0034 8 TDATA: DS ARRAYS ;testing data

9 ;

10 ;BINARY search algorithm 11 ;

---- 12 CSEG AT 0000H 13 ;setup both low and high pointers

0000 753234 14 BSEARCH: MOV LOW LOPTR,#TDATA 0003 75333B 15 MOV LOW HIPTR,#TDATA+ARRAYS-1 0006 E533 16 CONT: MOV A,LOW HIPTR ;get lower bound 0008 C3 17 CLR C ;clear carry flag 0009 9532 18 SUBB A,LOW LOPTR ;if low <= high 000B 401B 19 JC NOTFOUND ;no, has done 000D E533 20 MOV A,LOW HIPTR ;compute mid 000F 2532 21 ADD A,LOW LOPTR ; <- (low +high)/2

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.21

第7章 綜合程式設計

二分搜尋演算法

0011 C3 22 CLR C ;clear carry 0012 13 23 RRC A ;divide by two 0013 F9 24 MOV R1,A ;R1 = mid 0014 C3 25 CLR C ;clear carry 0015 E530 26 MOV A,LOW KEY 0017 97 27 SUBB A,@R1 ;compare key with the 0018 4008 28 JC BELOW ;middle item 001A 6010 29 JZ FOUND0

001C 8932 30 MOV LOW LOPTR,R1;if key1>array[R1]

001E 0532 31 INC LOW LOPTR ;then low <- mid + 1 0020 80E4 32 SJMP CONT

0022 8933 33 BELOW: MOV LOW HIPTR,R1;if key1<array[R1]

0024 1533 34 DEC LOW HIPTR ;high <- mid - 1 0026 80DE 35 SJMP CONT

0028 74FF 36 NOTFOUND: MOV A,#-1;if fnot found,KINDEX=-1 002A 8004 37 SJMP FOUND

002C C3 38 FOUND0: CLR C ;else adjust the KINDEX 002D E9 39 MOV A,R1

002E 9434 40 SUBB A,#TDATA 0030 F531 41 FOUND: MOV LOW KINDEX,A 0032 22 42 RET

43 END

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.22

第7章 綜合程式設計

基本乘法運算方法

1. 連續相加的方式 2. 使用乘法指令 3. 移位相加的方式

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.23

第7章 綜合程式設計

移位相加乘法運算

乘數 1 0 1 0

1 1 0 1

+ 被乘數

Y X

0 0 0 0 0 0 0 0

1 0 1 0 1 0 1 0 0 0 0 0

0 0 0 0 +

1 0 1 0 0 0 0 0

+ 1 0 1 0 0 0 1 0 0 0 1 1 + 1 0 1 0

0 0 1 0 1 0 0 0

P0

= 0 (部分積)

P1

= P

0

+ X

0Y

P2

= P

1

+ 2X

1Y

P3

= P

2

+ 2

2X2Y

P4

= P

3

+ 2

3X3Y = (乘積)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.24

第7章 綜合程式設計

移位相加乘法運算

演算法:移位相加乘法運算 輸

輸 輸

輸入入入:入:::待相乘的兩個 n 位元數目(乘數與被乘數)

輸 輸 輸出出出:出:::乘積 BEGIN::::

1. 載入被乘數於暫存器 Q 內,乘數於暫存器 M 中,清除暫存器 A 為 0 ,

並設定 COUNT 為 n ; 2. REPEAT

2.1右移暫存器 A:Q 一個位元位置,使其 LSB 進入進位旗號位元 CY

內;

2.2 IF 進位旗號位元 CY == 1 THEN 執行 A = A + M ; 2.3計數器 COUNT 減 1

UNTIL COUNT ==0

3. 右移暫存器 A:Q 一個位元位置

END {移位相加乘法運算演算法}

(5)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.25

第7章 綜合程式設計

使用乘法運算指令MUL

MULTER+1 MULTER

MULTEND+1 MULTEND

a b

c d

B A

RESULT+3 RESULT+2 RESULT+1 RESULT a*c

b*c a*d

b*d

×

+

B A

B A

B A

X

×

Y= a

( × 2

8

+

b

) × (

c

× 2

8

+

d

)

= ac × 2

16

+ (

ad

+

bc

) × 2

8

+

bd

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.26

第7章 綜合程式設計

乘法運算---Booth演算法

演算法: Booth 2 補數乘法運算 輸輸

輸輸入入入:入::待相乘的兩個 n 位元 2 補數數目(乘數與被乘數): 輸

輸 輸 輸出出出:出::乘積: BEGIN::::

1. 載入被乘數於暫存器 Q 內,乘數於暫存器 M 中,清除暫存器 A 與進位

旗號位元 CY 為 0 ,並設定 COUNT 為 n ; 2. REPEAT

2.1 IF Q(0): CY == 01 THEN 執行 A = A + M ; 2.2 IF Q(0): CY == 10 THEN 執行 A = A - M ;

2.3 右移暫存器 A:Q 一個位元位置,使其 LSB 進入進位旗號位元

CY內;

2.4 計數器 COUNT 減 1 UNTIL COUNT == 0 END { Booth 2補數乘法運算演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.27

第7章 綜合程式設計

乘法運算---Booth演算法

M = 23H

Q = 47H 0 0 0 00 0 0 0 0 1 0 00 1 1 1

A Q Q(0)CF

0 COUNT

8 A A- M

0 0 1 1 0 0 1 0 -

1 1 0 1 1 1 0 1

1 1 0 1 1 1 0 1

1 0 1 0 00 1 1 1 7 右移A:Q

1 1 0 1 1 1 0 1

1 0 1 1

1 0 1 0 0 6 右移A:Q

1 1 0 1 1 1 0 1

1 0 1

1 1 0 1 0 0 5 右移A:Q

0 0 1 1 0 0 1 0 +

1 1 1 0 0 0 0 1

A A+ M

1 1 1 0 0 0 0 1 1 0 1

0 0 1 0 0 0 4 右移A:Q

右移A:Q 右移A:Q 3 2

A A- M 1 1 1 0

0 0 0 1 1 0 1 0

0 0 1 0 0

1 1 1 0 0 0 0 1 1 0 1 0

0 0 1 0

0 0 0 1 1 0 0 1 0 -

0 0 0 0 1 1 1 0

0 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1

1 1 右移A:Q

A A+ M 0 0 1 1

0 0 1 0 +

0 1 1 0 0 1 0 0

0 右移A:Q

0 1 1 0 0 1 0

0 0 1 1 0 1 0 1 0

0 09B5H

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.28

第7章 綜合程式設計

除法運算-恢復式除法

M 除數

A Q

部分積 被除數

(商)

(餘數) 結果

計算過程 除數

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.29

第7章 綜合程式設計

除法運算-恢復式除法

演算法:恢復式除法運算 輸

輸輸

輸入入入:入:::待相除的兩個 n 位元數目(除數與被除數)

輸輸 輸出出出:出:::商數與餘數 BEGIN::::

1. 載入被除數於暫存器 Q 內,除數於暫存器 M 中,清除暫存器 A 為 0 ,

並設定 COUNT 為 n ; 2. REPEAT

2.1 左移暫存器 A:Q 一個位元位置;

2.2 計算 A = A - M ;

2.3 IF A < 0 THEN 執行 A = A + M 並清除 Q(0)為 0 ELSE 設定 Q(0)為 1 ;

2.4 計數器 COUNT 減 1 UNTIL COUNT == 0 END {恢復式除法運算演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.30

第7章 綜合程式設計

除法運算-恢復式除法

0 0 0 0 0 0 0 0 0 0 1 00 1 1 0

A 被除數(Q) COUNT

8

A A- M 0 0 0 0

0 0 0 0 -0 0 0 00 1 0 1

0 1 1 1 1 1 1 1

7 左移A:Q

A A+ M 除數(M)

00000101

0 1 1 0

0 1 0 0

0 1 1 0

0 1 0 0

A < 0,恢復除數 +0 0 0 00 1 0 1

0 0 0 0 0 0 0 0

-0 0 0 00 1 0 1

0

A A- M 左移A:Q

A A+ M A < 0,恢復除數 0 0 0 0

0 0 0 0

0 1 1 1 1 1 1 1

0 1 1 0

1 0 0 0

0 1 1 0

1 0 0

+0 0 0 00 1 0 1 0 0 0 0

0 0 0 0 0

0 6

左移A:Q A < 0,恢復除數 0 1 1 0

1 0 0

0 0 0 0 0

0 0 0 0

A A- M -0 0 0 00 1 0 1

1 0 0 1 1 1 1 1 +0 0 0 00 1 0 1

0 0 1 1 0

1 0 0

0 0 0 0 0

0 0 0 0

A A+ M 5

左移A:Q A A- M 0 1 1 0

1 0 0

0 0 0 0 0

0 0 0 0

-0 0 0 00 1 0 1

(6)

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.31

第7章 綜合程式設計

除法運算-恢復式除法

A < 0,恢復除數 A A+ M 1 0 1

1 1 1 1 1 +0 0 0 00 1 0 1

0 0 0 0 1 0 0 0

0 0 1 1 0 0000 4

0 左移A:Q

A < 0,恢復除數 A A- M

A A+ M 0 1 1 0

1 0 0

0 0 0 0 0 0

0 0 0

-0 0 0 00 1 0 1 1 1 1 1 1 1 1 1 +0 0 0 00 1 0 1

0 0 0 1 0

0 0 0 1 1 0 00000 3 左移A:Q A > 0 A A- M 0 1 1 0

1 0 0

0 0 0 0 0000 0

-0 0 0 00 1 0 1 1 0 0 0 0 0 0

0 1 0 00000 1

1 0

2 1 0 0

0 0 0 0 1 0 00000 10

1 1

左移A:Q -0 0 0 00 1 0 1

1 0 0 0 0 0 0

0 0 00000 10 A > 0 A A- M

左移A:Q 1 0 0

0 0 0 0 0 0 00001 10 -0 0 0 00 1 0 1

0 1 1 0 0 0 0

0 0 00001 10 0

A A- M A > 0 商數 1

餘數

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.32

第7章 綜合程式設計

除法運算-非恢復式除法

演算法:非恢復式除法運算 輸

輸輸

輸入入入入::::待相除的兩個 n 位元數目(除數與被除數)

輸輸 輸出出出出::::商數與餘數 BEGIN::::

1. 載入被除數於暫存器 Q 內,除數於暫存器 M 中,清除暫存器 A 為 0 ,

並設定 COUNT 為 n - 1 ;

2. 左移暫存器 A:Q 一個位元位置;

3. 計算 A = A - M ; 4. REPEAT

4.1 IF A < 0 THEN 執行下列三個動作:

清除 Q(0)為 0 ; 左移暫存器 A:Q 一個位元位置;

A = A + M

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.33

第7章 綜合程式設計

除法運算-非恢復式除法

ELSE 執行下列三個動作:

設定 Q(0)為 1 ;

左移暫存器 A:Q 一個位元位置;

A = A - M ; 4.2 計數器 COUNT 減 1 UNTIL COUNT ==0

5. IF A < 0 THEN 清除 Q(0)為 0 並計算 A = A + M ; ELSE 設定 Q(0)為 1 ;

END {非恢復式除法運算演算法}

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.34

第7章 綜合程式設計

除法運算-非恢復式除法

0 0 0 0

0 0 0 0 0 0 1 0 0 1 1 0

A

被除數(Q) COUNT

8

A A

- M 0 0 0 0

0 0 0 0 - 0 0 0 0 0 1 0 1

0 1 1 1 1 1 1

1 7

左移A:Q 除數(M)

00000101

0 1 1 0

0 1 0 0

0 1 1 0

0 1 0 0

A < 0

+ 0 0 0 0 0 1 0 1

0

A A

+ M 左移A:Q

A < 0

0 1 1

1 1 1 1 1

0 1 1 0

1 0 0 0

0 1 1 0

1 0 0 0

0 6

左移A:Q

A < 0

0 1 1 0

1 0 0

1 0 1 1 0

1 1 1 0

A A

+ M + 0 0 0 0 0 1 0 1

1 0 0 1 1 1 1 1

0 0 1 1 0

0 0 0 0 5

左移A:Q

A A

+ M 0 1 1 0

0 0 0

1 1 1 0 0

1 1 0 0

+ 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1

微算機基本原理與應用

林銘波編著 --- 全華科技圖書公司 7.35

第7章 綜合程式設計

除法運算-非恢復式除法

A < 0 1 0 1

1 1 1 1 1

0 0 1 1 0 0000 4

0 左移A:Q

A < 0 0 1 1 0

0 1 0

1 1 1 1 0 0

1 0 0

+0 0 0 00 1 0 1 1 1 1 1 1 1 1

1 1 1 0 00000 3

左移A:Q

A > 0

A A+ M

1 1 1 0

1 1 0

1 1 1 1 0000 0

+0 0 0 00 1 0 1 1 0 0 0 0 0 0

0 1 0 00000 1

1 0

2 1 0 0

0 0 0 0 1 0 00000 10

1 1

左移A:Q -0 0 0 00 1 0 1

1 0 0 0 0 0 0

0 0 00000 10 A > 0 A A- M

左移A:Q 1 0 0

0 0 0 0 0 0 00001 10 -0 0 0 00 1 0 1

0 1 1 0 0 0 0

0 0 00001 10 0

A A- M A > 0 商數 1

餘數

A A+ M

參考文獻

相關文件

3個NOT 1個VCC 1個AND2

[r]

由高位址向低位址遞減 由高位址向低位址遞減 由高位址向低位址遞減 由高位址向低位址遞減

SHIFTER:移位器 ALU:算術邏輯單元 ADDRGEN:位址編碼器

 邏輯閘階層 邏輯閘階層(gate level) 邏輯閘階層 邏輯閘階層 (gate level) (gate level)模型 (gate level) 模型 模型 模型.  暫存器轉移階層 暫存器轉移階層( 暫存器轉移階層 暫存器轉移階層 (( (r

具備 (凌陽格式 ) 串列 SRAM 介面. 7 通道10位元電壓類比/數位轉換器 (ADC) 單通道聲音類比/數位轉換器

IOB2 為反相輸出方式 與 IOB4 組成一個 RC.

設一個二位數,十位數與個位數的數字的和為 4,若將十位數字 與個位數字對調後,所得新數比原數大 18。請問原二位數字應 為多少?.?. 設一個二位數,十位數與個位數的數字的和為