国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用唐都實(shí)驗(yàn)箱通過微指令實(shí)現(xiàn)冒泡排序,原碼一位乘和棧的相關(guān)操作

這篇具有很好參考價值的文章主要介紹了用唐都實(shí)驗(yàn)箱通過微指令實(shí)現(xiàn)冒泡排序,原碼一位乘和棧的相關(guān)操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

內(nèi)含內(nèi)容如有錯漏或未解釋清楚之處請私信博主進(jìn)行討論,討論后予以更新

需要word和源碼文件交流也請私信博主

摘要

1 前言

2 實(shí)驗(yàn)原理

2.1 數(shù)據(jù)格式

2.2 指令格式

2.3 數(shù)據(jù)通路框圖

3 總體****設(shè)計

3.1 微指令流程圖

3.2 指令系統(tǒng)

3.3 線路連接圖

4 詳細(xì)設(shè)****計

4.1 冒泡排序

4.2 原碼一位乘

4.3 堆棧

5 實(shí)驗(yàn)結(jié)果

5.1 冒泡排序

5.2 原碼一位乘

5.3堆棧

6 參考文獻(xiàn)

摘要

本次課程設(shè)計首先對復(fù)雜模型機(jī)進(jìn)行研究,了解復(fù)雜模型機(jī)的工作原理,然后實(shí)現(xiàn)實(shí)驗(yàn)箱中硬件接線,并用測試樣例測試連線是否正確。測試通過后,對復(fù)雜模型機(jī)指令系統(tǒng)進(jìn)行運(yùn)用和改寫,通過編寫匯編語言代碼和微程序指令,實(shí)現(xiàn)了冒泡排序、四位原碼一位乘和棧這三個功能。

關(guān)鍵字:復(fù)雜模型機(jī) 冒泡排序 原碼一位乘 棧

1 前言

《計算機(jī)組成原理》是高等學(xué)校計算機(jī)專業(yè)的一門核心課程,通過對復(fù)雜模型機(jī)的學(xué)習(xí), 可以 使學(xué)生理解單處理機(jī)系統(tǒng)的組成結(jié)構(gòu),以及各功能部件的組成和工作原理, 幫助學(xué)生建立計算機(jī)的整機(jī)概念。

模型機(jī)必須能提供不同復(fù)雜程度的數(shù)據(jù)通路和運(yùn)算功能,必須能實(shí)現(xiàn)不同復(fù)雜程度的指令系統(tǒng)。 復(fù)雜模型機(jī)首先要實(shí)現(xiàn)一個簡單的CPU,并且在此 CPU 的基礎(chǔ)上,繼續(xù)構(gòu)建一個復(fù)雜的模型計算機(jī)。 CPU 由運(yùn)算器(ALU)、微程序控制器(MC)、通用寄存器(R0), 指令寄存器(IR)、程序計 數(shù)器(PC)和地址寄存器(AR)組成,如圖 3.1 所示。這個 CPU 在寫入相應(yīng)的微指令后, 就具備了 執(zhí)行機(jī)器指令的功能,但是機(jī)器指令一般存放在主存當(dāng)中,CPU 必須和主存掛接后,才有實(shí)際的意 義, 所以還需要在該 CPU 的基礎(chǔ)上增加一個主存和基本的輸入輸出部件,以構(gòu)成一個復(fù)雜的模型計算機(jī)。

模型機(jī)設(shè)計三大類指令共十五條,其中包括運(yùn)算類指令、控制轉(zhuǎn)移類指令, 數(shù)據(jù)傳送類指令。 運(yùn)算類指令包含三種運(yùn)算,算術(shù)運(yùn)算、邏輯運(yùn)算和移位運(yùn)算,設(shè)計有 6 條運(yùn)算類指令,分別為:ADD、 AND 、INC 、SUB 、OR、RR,所有運(yùn)算類指令都為單字節(jié),尋址方式采用寄存器直接尋址。控制轉(zhuǎn) 移類指令有三條 HLT 、JMP 、BZC,用以控制程序的分支和轉(zhuǎn)移,其中 HLT 為單字節(jié)指令,JMP 和 BZC 為雙字節(jié)指令。數(shù)據(jù)傳送類指令有 IN 、OUT、MOV、LDI、LAD 、STA 共 6 條,用以完成寄存 器和寄存器、寄存器和 I/O、寄存器和存儲器之間的數(shù)據(jù)交換, 除 MOV 指令為單字節(jié)指令外,其余 均為雙字節(jié)指令。

在本次復(fù)雜模型機(jī)實(shí)驗(yàn)中,我們通過硬件接線、程序運(yùn)行和冒泡排序、補(bǔ)碼一位乘法和堆棧功能代碼的編寫,深入了解了計算機(jī)系統(tǒng)各模塊的工作原理及相互間的聯(lián)系,熟悉計算機(jī)內(nèi)部的數(shù)據(jù)流向,清晰建立計算機(jī)整機(jī)概念。

2 實(shí)驗(yàn)原理

2.1 數(shù)據(jù)格式

模型機(jī)規(guī)定采用定點(diǎn)補(bǔ)碼表示法表示數(shù)據(jù),字長為8位, 8 位全用來表示數(shù)據(jù)(最高位不表示符號) ,數(shù)值表示范圍是: 0≤X≤28-1。

寄存器為8位,數(shù)據(jù)字段長度FFH。

2.2 指令格式

所有單字節(jié)指令(ADD、AND、INC、SUB、OR、RR、HLT和MOV)格式如下:

表 2.2.1 單字節(jié)指令

7654 32 10
OP-CODE RS RD

其中, OP-CODE 為操作碼,RS 為源寄存器, RD 為目的寄存器, 并規(guī)定:

表 2.2.2 RS,RD

RS 或 RD 選定的寄存器
00 R0
01 R1
10 R2
11 R3

IN 和 OUT 的指令格式為:

表 2.2.3 IN,OUT

7654 32 10(1) 7—0(2)
OP-CODE RS RD P

其中括號中的1表示指令的第一字節(jié),2表示指令的第二字節(jié),OP-CODE為操作碼,RS為源寄存器,RD為目的寄存器,P為I/O端口號,占用一個字節(jié).用的是地址總線的高兩位進(jìn)行譯碼,I/O地址空間被分為四個區(qū),如表2.3.2 所示:

表 2.2.4 I/O 地址空間分配

A7 A6 選定 地址空間
00 IOY0 00-3F
01 IOY1 40-7F
10 IOY2 80-BF
11 IOY3 C0-FF

系統(tǒng)設(shè)計五種數(shù)據(jù)尋址方式,即立即、直接、間接、變址和相對尋址,LDI 指令為立即尋址, LAD 、STA 、JMP 和 BZC 指令均具備直接、間接、變址和相對尋址能力。LDI 的指令格式如下, 第一字節(jié)同前一樣,第二字節(jié)為立即數(shù)。

表 2.2.5 尋址

7654(1) 32(1) 10(1) 7—0(2)
OP-CODE RS RD data

LAD 、STA 、JMP 和 BZC 指令格式如下。

表 2.2.6 指令格式

7654(1) 32(1) 10(1) 7—0(2)
OP-CODE M RD D

其中 M 為尋址模式, 具體見表 2.2.7,以 R2 做為變址寄存器 RI。

表 2.2.7 尋址方式

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-2XnziDOY-1679752238166)(file:///C:\Users\cfreeze\AppData\Local\Temp\ksohtml18156\wps3.jpg)]

2.3 數(shù)據(jù)通路框圖

本模型機(jī)的數(shù)據(jù)通路框圖如圖 2.4.1 所示。

源碼一位乘模型機(jī),windows 10,算法

圖 2.3.1 數(shù)據(jù)通路框圖

3 總體設(shè)計

3.1 微指令流程圖

本模型機(jī)共有15條基本指令,表3.1.1列出了各條指令的格式、匯編符號、指令功能。

表3.1.1 基本指令說明
源碼一位乘模型機(jī),windows 10,算法

依據(jù)功能需要,我們把復(fù)雜模型機(jī)中的指令進(jìn)行了一定的更改,把地址為 3B 的保留指令設(shè)計為 DEC 指令,并把地址為 15 的微指令更改為自減一指令

3.2 指令系統(tǒng)

經(jīng)過更改后的微指令二進(jìn)制代碼表如表 3.2.1 所示。

表 3.2.1 二進(jìn)制代碼表

地址 十六進(jìn)制表示 高五位 S3-S0 A 字段 B 字段 C 字段 UA5-UA0
00 00 00 01 00000 0000 000 000 000 000001
01 00 6D 43 00000 0000 110 110 101 000011
03 10 70 70 00010 0000 111 000 001 110000
04 00 24 05 00000 0000 010 010 000 000101
05 04 B2 01 00000 1001 011 001 000 000001
06 00 24 07 00000 0000 010 010 000 000111
07 01 32 01 00000 0010 011 001 000 000001
08 10 60 09 00010 0000 110 000 000 001001
09 18 30 01 00011 0000 011 000 000 000001
0A 10 60 10 00010 0000 110 000 000 010000
0B 00 00 01 00000 0000 000 000 000 000001
0C 10 30 01 00010 0000 011 000 000 000001
0D 20 06 01 00100 0000 000 011 000 000001
0E 00 53 41 00000 0000 101 001 101 000001
0F 00 00 CB 00000 0000 000 000 011 001011
10 28 04 01 00101 0000 000 010 000 000001
11 10 30 01 00010 0000 011 000 000 000001
12 06 B2 01 00000 1101 011 001 000 000001
13 00 24 14 00000 0000 010 010 000 010100
14 05 B2 01 00000 1011 011 001 000 000001
15 06 32 01 00000 1100 011 001 000 000001
16 01 B2 01 00000 0011 011 001 000 000001
17 00 24 18 00000 0000 010 010 000 011000
18 02 B2 01 00000 0101 011 001 000 000001
1B 00 53 41 00000 0000 101 001 101 000001
1C 10 10 1D 00010 0000 001 000 000 011101
1D 10 60 8C 00010 0000 110 000 010 001100
1E 10 60 1F 00010 0000 110 000 000 011111
1F 10 10 20 00010 0000 001 000 000 100000
20 10 60 8C 00010 0000 110 000 010 001100
28 10 10 29 00010 0000 001 000 000 101001
29 00 28 2A 00000 0000 010 100 000 101010
2A 04 E2 2B 00000 1001 110 001 000 101011
2B 04 92 8C 00000 1001 001 001 010 001100
2C 10 10 2D 00010 0000 001 000 000 101101
2D 00 2C 2E 00000 0000 010 110 000 101110
2E 04 E2 2F 00000 1001 110 001 000 101111
2F 04 92 8C 00000 1001 001 001 010 001100
30 00 16 04 00000 0000 001 011 000 000100
31 00 16 06 00000 0000 001 011 000 000110
32 00 6D 48 00000 0000 110 110 101 001000
33 00 6D 4A 00000 0000 110 110 101 001010
34 00 34 01 00000 0000 011 010 000 000001
35 00 00 35 00000 0000 000 000 000 110101
36 00 6D 51 00000 0000 110 110 101 010001
37 00 16 12 00000 0000 001 011 000 010010
38 00 16 13 00000 0000 001 011 000 010011
39 00 16 15 00000 0000 001 011 000 010101
3A 00 16 17 00000 0000 001 011 000 010111
3B 00 16 15 00000 0000 001 011 000 010101
3C 00 6D 5C 00000 0000 110 110 101 011100
3D 00 6D 5E 00000 0000 110 110 101 011110
3E 00 6D 68 00000 0000 110 110 101 101000
3F 00 6D 6C 00000 0000 110 110 101 101100

3.3 線路連接圖

實(shí)驗(yàn)線路圖如圖3.2.1 所示,實(shí)驗(yàn)開始前需仔細(xì)檢查接線后打開實(shí)驗(yàn)箱電源。

源碼一位乘模型機(jī),windows 10,算法

圖3.3.1 線路連接圖

4 詳細(xì)設(shè)計

4.1 冒泡排序

4.1.1 冒泡排序流程圖

源碼一位乘模型機(jī),windows 10,算法

圖4.1.1 冒泡排序流程圖

*4.1.2 設(shè)計原理*

冒泡排序(Bubble Sort)是排序算法里面比較簡單的一個排序。它重復(fù)地走訪要排序的數(shù)列,一次比較兩個數(shù)據(jù)元素,如果順序不對則進(jìn)行交換,并一直重復(fù)這樣的走訪操作,直到?jīng)]有要交換的數(shù)據(jù)元素為止

*4.1.3 總體思路*

先輸入待排序的數(shù)量至 R0,接著保存長度到 F1H 中,從 F1H 處取出數(shù)據(jù)送到 R2, 此步作為輸入循環(huán)控制。

輸入待排序數(shù)至 R0,采用變址尋址方式保存數(shù)據(jù), 其中 E0 為基地址,寄存器R2自減,若R2不等于0,則重新進(jìn)入輸入循環(huán)控制中; 若R2等于0,則跳到外循環(huán)控制中。

將R3中的數(shù)據(jù)送到R2中,R2作為內(nèi)循環(huán)控制。接著通過變址尋址方式取值送到R1中, 作為當(dāng)前比較數(shù),之后把最大值送入到 F2 中,保存最大數(shù)。

比較 R0 與 R1 中的數(shù)據(jù),若R1大于R0,則保存較大值位置,并取出較小值送到 R0,把較小值 R0 存到原來較大值的位置,再將R2自減;否則 直接進(jìn)入 R2 自減步驟。判斷 R2 是否為 0,若是,R3 自減,否則進(jìn)入內(nèi)循環(huán)控制。接著判斷 R3 是否 為 0,若是則輸出結(jié)果, 否則進(jìn)入內(nèi)循環(huán)控制。

*4.1.4 源程序代碼*

$P 00 21 ;IN R1,00H

$P 01 00 ;

$P 02 71 ;INC R1

$P 03 D1 ;STA R1,60H

$P 04 60 ;

$P 05 60 ;LDI R0,01H

$P 06 01

;LOOP:

$P 07 C1 ;LAD R1,60H

$P 08 60 ;

$P 09 81 ;SUB R1,R0

$P 0A F0 ;BZC HALT///OUT

$P 0B 26

$P 0C D1 ;STA R1,60H

$P 0D 60 ;

$P 0E 81 ;SUB R1,R0

$P 0F D1 ;STA R1,5FH

$P 10 5F

$P 11 62 ;LDI R2,61H

$P 12 61

;LOOP2:

$P 13 C8 ;LAD R0,[RI],00H

$P 14 00

$P 15 72 ;INC R2

$P 16 C9 ;LAD R1,[RI],00H

$P 17 00 ;

$P 18 84 ;SUB R0,R1

$P 19 F0 ;BZC EX

$P 1A 37 ;

;RET:

$P 1B 60 ;LDI R0,01H

$P 1C 01

$P 1D C3 ;LAD R3,5FH

$P 1E 5F ;

$P 1F 83 ;SUB R3,R0

$P 20 D3 ;STA R3,5FH

$P 21 5F ;

$P 22 F0 ;BZC LOOP

$P 23 07

$P 24 E0 ;JMP LOOP2

$P 25 13

$P 26 62;LDI R2,60HLOOP///OUT

$P 27 60

$P 28 60;LDI R0,03

$P 29 03

$P 2A 72;INC R2

$P 2B C9;LAD R1

$P 2C 00

$P 2D 34;OUT

$P 2E 40

$P 2F 61;DEC R0,LDIR1 01 SUB

$P 30 01

$P 31 84

$P 32 F0;BZC HALT

$P 33 36

$P 34 E0;JMP LOOP

$P 35 2A

$P 36 50 ;HALT

;EX:

$P 37 E0 ;JMP 29

$P 38 39 ;

$P 39 CB ;LAD R3,[RI],00H

$P 3A 00

$P 3B 60 ;LDI R0,01H

$P 3C 01

$P 3D 82 ;SUB R2,R0

$P 3E C8 ;LAD R0,[RI],00H

$P 3F 00

$P 40 72 ;INC R2

$P 41 D8 ;STA R0,[RI],00H

$P 42 00

$P 43 60 ;LDI R0,01H

$P 44 01

$P 45 82 ;SUB R2,R0

$P 46 D9 ;STA R1,[RI],00H

$P 47 00 ;

$P 48 72 ;INC R2

$P 49 E0 ;JMP RET

$P 4A 1B

;存放數(shù)字

$P 61 01

$P 62 03

$P 63 02

$P 64 04

$P 65 05

$P 66 06

$P 67 06

$P 68 08

$P 69 09

$P 6A 0A

$P 6B 0B

$P 6C 0C

$P 6D 0D

$P 6E 0E

$P 6F 0F

$P 70 10

$P 71 11

$P 72 12

$P 73 12

$P 74 14

4.2 原碼一位乘

4.2.1設(shè)計原理

4.2.2總體思路

在定點(diǎn)補(bǔ)碼一位乘的過程中,給各個寄存器和存儲單元賦初值,再通過乘數(shù)放乘積的低八位,存儲單元和寄存器r0放乘數(shù)的高八位,每次先判斷乘數(shù)最低位是否為0,為1則進(jìn)行部分積加被乘數(shù),同時保留溢出,保留部分積最低位,將乘數(shù)最低位置零,再加上部分積的最低位并進(jìn)行一次右環(huán)移),再將部分積最低位置零再右環(huán)移,并加回溢出值,判斷結(jié)束,運(yùn)算結(jié)束輸出結(jié)果,否則返回再循環(huán)。

4.2.3流程圖

定點(diǎn)原碼一位乘的總體流程如圖所示:
源碼一位乘模型機(jī),windows 10,算法

圖4.2.3 補(bǔ)碼一位乘流程圖

4.2.4 源程序代碼

$P 00 20 ;IN R0, 00H

$P 01 00 ;

$P 02 21 ;IN R1, 00H ;讀取輸入的值分別存儲到R0和R1里

$P 03 00 ;

$P 04 62 ;LDI R2,F0H

$P 05 F0

$P 06 63 ;LDI R3,0FH

$P 07 0F

$P 08 18 ;AND R0,R2 ;X

$P 09 1D ;AND R1,R3 ;Y

$P 0A 62 ;LDI R2, 00H ;計數(shù)

$P 0B 00 ;

$P 0C 63 ;LDI R3, 00H ;部分積

$P 0D 00 ;

$P 0E D0 ;STA 00, F0H, R0 ;存儲X的數(shù)據(jù)到f0單元

$P 0F F0 ;

$P 10 60 ;LDI R0, 00H ;初始化進(jìn)位標(biāo)志位為0

$P 11 00 ;

$P 12 D0 ;STA 00H, F4H, R0 ;存儲進(jìn)位標(biāo)志

$P 13 F4 ;

$P 14 72 ;INC R2

$P 15 60 ;LDI R0,05H ;循環(huán)次數(shù):5-1=4

$P 16 05 ;

$P 17 88 ;SUB R0, R2 ;比較循環(huán)次數(shù)

$P 18 F0 ;BZC Output ;zf=0 end

$P 19 49 ;

$P 1A 60 ;LDI R0,01H

$P 1B 01

$P 1C 14 ;AND R0,R1; 取最后一位的值

$P 1D F0 ;BZC Preser0 ;最后一位為0跳轉(zhuǎn)

$P 1E 21

$P 1F E0 ;JMP Preser1 ;為1跳另一個

$P 20 31

$P 21 60 ;LDI R0,01H;

$P 22 01

$P 23 D2 ;STA 00H, F1H, R2 ;存儲計數(shù)值

$P 24 F1

$P 25 A1 ;RR R1,R0

$P 26 A3 ;RR R3,R0 ;部分積和Y右移一位

$P 27 4C;MOV R0,R3

$P 28 62;LDI R2,08H

$P 29 08

$P 2A 18;AND R0,R2

$P 2B 01;ADD R1,R0 ;;;右一后將乘數(shù)第一位補(bǔ)充上

$P 2C 62 ;LDI R2, 80

$P 2D 80

$P 2E 1E ;AND R2,R3

$P 2F E0;JMP A0;;

$P 30 5C

$P 31 C0 ;LAD 00, F0H, R0 ;取出X

$P 32 F0

$P 33 03 ;ADD R3,R0 ;加一個X

$P 34 F0 ;BZC C0 相加有進(jìn)位,

$P 35 55 ;

$P 36 D2 ;STA 00H, F1H, R2 ;存儲計數(shù)值

$P 37 F1

$P 38 62 ;LDI R2, 80H

$P 39 80

$P 3A 60 ;LDI R0,01H

$P 3B 01

$P 3C A1 ;RR R1,R

$P 3D A3 ;RR R3,R0

$P 3E 4C;MOV R0,R3

$P 3F 62; LDI R2,08H

$P 40 08

$P 41 18;AND R0,R2

$P 42 01;ADD R1,R0

$P 43 E0;JMP A0

$P 44 5C

$P 45 C2 ;LAD 00H, F1H, R2

$P 46 F1

$P 47 E0 ;JMP Right

$P 48 14

$P 49 60 ;LDI R0,0FH

$P 4A 0F

$P 4B 62 ;LDI R2,F0H

$P 4C F0

$P 4D 1B ;AND R3,R2

$P 4E 11 ;AND R1,R0

$P 4F 07 ;ADD R3,R1

$P 50 3C ;OUT 40H, R3

$P 51 40;

$P 52 D3 ;STA 00H, F2H, R3

$P 53 F2

$P 54 50 ;HALT

$P 55 60 ;LDI R0 01H

$P 56 01 ;

$P 57 D0 ;STA 00H, F4H, R0 ;存儲進(jìn)位標(biāo)志

$P 58 F4

$P 59 80 ;SUB R0,R0 ;清空進(jìn)位標(biāo)志位

$P 5A E0 ;JMP C1 ;相加有進(jìn)位返回此處

$P 5B 36

$P 5C C0 ;LAD 00H, F4H, R0 ;取出進(jìn)位標(biāo)志位

$P 5D F4 ;

$P 5E 62 ;LDI R2,01H

$P 5F 01 ;

$P 60 82 ;SUB R2,R0

$P 61 F0 ;BZC A2 ;進(jìn)位為1

$P 62 68 ;

$P 63 62 ;LDI R2, 7FH

$P 64 7F ;

$P 65 1B ;AND R3,R2 ;讓部分積最高位置0

$P 66 E0 ;JMP A1 ;;部分積最高位為0

$P 67 45 ;

;A2:

$P 68 62 ;LDI R2, 80H

$P 69 80 ;

$P 6A 9B ;OR R3, R2 ;部分積最高位置1

$P 6B 60 ;LDI R0, 00H ;重置標(biāo)志位為0

$P 6C 00 ;

$P 6D D0 ;STA 00H, F4H, R0

$P 6E F4 ;

$P 6F E0 ;JMP A1

$P 70 45 ;

4.3 堆棧

4.3.1 設(shè)計原理

棧(stack)又稱堆棧,它是一種運(yùn)算受限的線性表。限定僅在表尾進(jìn)行插入和刪除操作。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱進(jìn)棧、入?;蛘呤菈簵?,它是把新元素放到棧頂元素的上面,使之稱為新的棧頂元素;從一個棧刪除一個元素又稱出棧或者是退棧,它是把棧頂元素刪除掉,使其相鄰的元素稱為新的棧頂元素。當(dāng)棧中沒有任何元素時稱為空棧。

4.3.2 棧約束

源碼一位乘模型機(jī),windows 10,算法

圖4.3.2.1 棧初始化

源碼一位乘模型機(jī),windows 10,算法

圖4.3.2.2 入棧

源碼一位乘模型機(jī),windows 10,算法

圖4.3.2.3 出棧

源碼一位乘模型機(jī),windows 10,算法

圖4.3.2.4 上溢說明

4.3.3 堆棧流程圖
源碼一位乘模型機(jī),windows 10,算法

圖4.2.3 堆棧流程圖

4.3.4 源程序代碼

START: 初始化棧棧底棧容量初始化棧內(nèi)數(shù)據(jù)
IN R0,00H 把00H端口的數(shù)據(jù)放入R0(輸入操作數(shù))
LDI R1,01H 裝入比較值
SUB R1,R0 相減
BZC P1LDI R1,02H 裝入比較值
SUB R1,R0 相減
BZC P2LDI R1,04H 裝入比較值
SUB R1,R0 相減
BZC P3LDI R1,08H 裝入比較值
SUB R1,R0 相減
BZC P4LDI R1,10H 裝入比較值
SUB R1,R0 相減
BZC P5
P1: 入棧功能
IN R0,00 輸入入棧元素
LDI R2,61HLAD R1,[RI],00HINC R1STA 61H,R1 棧內(nèi)數(shù)據(jù)個數(shù)++R1
LDI R2,62HLAD R3,[RI],00HINC R3SUB R3,R1BZC WARN 判上溢 容量 R3
LDI R2,63HLAD R1,[RI],00H ;r1存棧頂?shù)刂稭OV R2,R1STA R0,[RI],00H 存數(shù)
LDI R1,01HSUB R2,R1STA 63H,R2 棧頂指針減一
JMP START 跳轉(zhuǎn)到開始
P2: 出棧
LDI R2,60HLAD R1,[RI],00HSUB R0,R1BZC WARN 判下溢,提示
LDI R2,63HLAD R0,[RI],00HINC R0STA 63H,R0 棧頂指針加一
LDI R2,61HLAD R0,[RI],00HLDI R1,01HSUB R2,R1STA 61H,R2 棧內(nèi)數(shù)據(jù)數(shù)-1
JMP START 跳轉(zhuǎn)到開始
P3: 展示元素//需要判斷是否是從指針加1開始的
LOOP:
LAD R0,63H 取地址
LAD R1,R0 取地址內(nèi)的數(shù)
OUT 40H,R1 顯示數(shù)據(jù)
INC R0 指針++
LAD R2,60HINC R2SUB R0,R2BZC START;等于0就跳會選項(xiàng)JMP LOOP;未顯示完返回顯示 判斷指針是否等于棧底地址+1(下溢不顯示)
P4: 展示元素個數(shù)
LAD R0,61HOUT 40H,R0 顯示數(shù)據(jù)
JMP START
p5: 清空棧
LDI R2,60HLAD R0,[RI],00HLDI R2,63HSTA R0,[RI],00H 把棧底地址R0寫入棧頂?shù)刂?3H
WARN:
LDI R0,FFH
OUT 40H,R0
JMP START

4.3.5 微程序代碼

$P0020

$P0100

$P0261

$P0301

$P0484

$P05F0

$P0621

$P0720

$P0800

$P0961

$P0A02

$P0B84

$P0CF0

$P0D46

$P0E20

$P0F00

$P1061

$P1104

$P1284

$P13F0

$P145F

$P1520

$P1600

$P1761

$P1808

$P1984

$P1AF0

$P1B72

$P1C20

$P1D00

$P1E61

$P1F10

$P2064

$P21F0

$P227A

$P2120

$P2200

$P2362

$P2491

$P25C9

$P2600

$P2771

$P2862

$P2992

$P2ACB

$P2B00

$P2C73

$P2D87

$P2EF0

$P2F84

$P30D1

$P3191

$P3262

$P3393

$P34C9

$P3500

$P3646

$P37D8

$P3800

$P3961

$P3A01

$P3B86

$P3CD2

$P3D93

$P3E62

$P3FFF

$P40C9

$P4100

$P4234

$P4340

$P44E0

$P4500

$P4662

$P4790

$P48C9

$P4900

$P4A84

$P4BF0

$P4C84

$P4D62

$P4E93

$P4FC8

$P5000

$P5170

$P52D0

$P5393

$P5462

$P5591

$P56C8

$P5700

$P5861

$P5901

$P5A86

$P5BD2

$P5C91

$P5DE0

$P5E00

$P5F62

$P6093

$P61C8

$P6200

$P6362

$P6490

$P65C9

$P6600

$P6784

$P68F0

$P6900

$P6A70

$P6B42

$P6CC9

$P6D00

$P6E34

$P6F40

$P70E0

$P715F

$P7262

$P7391

$P74C9

$P7500

$P7634

$P7740

$P78E0

$P7900

$P7A62

$P7B90

$P7CC8

$P7D00

$P7E62

$P7F93

$P80D8

$P8100

$P8300

$P8460

$P8500

$P86D0

$P8791

$P82E0

$P8300

$P8461

$P85FF

$P8634

$P8740

$P88E0

$P8900

$P8A50

$P90FF

$P9100

$P9202

$P93FF

5 實(shí)驗(yàn)結(jié)果

5.1 冒泡排序

依次輸入1,3,2三個數(shù),經(jīng)排序,數(shù)碼管應(yīng)依次顯示結(jié)果01,02,03,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.1.1、5.1.2、5.1.3所示。
源碼一位乘模型機(jī),windows 10,算法

圖5.1.1 冒泡排序?qū)嶒?yàn)結(jié)果1

源碼一位乘模型機(jī),windows 10,算法

圖5.1.2 冒泡排序?qū)嶒?yàn)結(jié)果2

源碼一位乘模型機(jī),windows 10,算法

圖5.1.3 冒泡排序?qū)嶒?yàn)結(jié)果3

5.2 原碼一位乘

低四位輸入0010(十進(jìn)制為2),高四位輸入0100(十進(jìn)制為4),高四位和低四位相乘,輸出結(jié)果應(yīng)為十進(jìn)制的08,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.2所示。

源碼一位乘模型機(jī),windows 10,算法

圖5.2 原碼一位乘實(shí)驗(yàn)結(jié)果

5.3堆棧

輸入0000 0001,實(shí)現(xiàn)入棧功能,將01壓入棧,數(shù)碼管應(yīng)顯示01,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.3.1所示

源碼一位乘模型機(jī),windows 10,算法

圖5.3.1 入棧實(shí)驗(yàn)結(jié)果

繼續(xù)入棧,設(shè)置棧內(nèi)容量為2,因此將兩個01壓入棧,會發(fā)生溢出,數(shù)碼管應(yīng)顯示FF,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.3.2所示
源碼一位乘模型機(jī),windows 10,算法

圖5.3.2 溢出實(shí)驗(yàn)結(jié)果

輸入0000 0010,實(shí)現(xiàn)元素出棧功能。

輸入0000 0100,實(shí)現(xiàn)顯示棧內(nèi)元素功能,之前壓入棧的數(shù)據(jù)為01,因此顯示01,運(yùn)行結(jié)果如圖5.3.3所示

源碼一位乘模型機(jī),windows 10,算法

圖5.3.3 顯示棧內(nèi)元素實(shí)驗(yàn)結(jié)果

輸入0000 1000,實(shí)現(xiàn)顯示棧內(nèi)元素個數(shù)功能,之前將兩個01壓入棧,因此數(shù)碼管應(yīng)顯示02,運(yùn)行結(jié)果符合預(yù)期,如圖5.3.4所示。

源碼一位乘模型機(jī),windows 10,算法

圖5.3.4 顯示棧內(nèi)元素個數(shù)實(shí)驗(yàn)結(jié)果

輸入0001 0000,實(shí)現(xiàn)清空棧內(nèi)元素功能,此時,棧內(nèi)元素清空,數(shù)碼管應(yīng)顯示00,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.3.5所示

源碼一位乘模型機(jī),windows 10,算法

圖5.3.5 清空棧實(shí)驗(yàn)結(jié)果

此時,棧內(nèi)無元素,在此顯示棧內(nèi)元素,數(shù)碼管應(yīng)顯示00,實(shí)驗(yàn)結(jié)果符合預(yù)期,如圖5.3.6所示。

源碼一位乘模型機(jī),windows 10,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-774935.html

到了這里,關(guān)于用唐都實(shí)驗(yàn)箱通過微指令實(shí)現(xiàn)冒泡排序,原碼一位乘和棧的相關(guān)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ARM920T實(shí)驗(yàn)箱s3c2410 矩陣按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)和停止

    ARM920T實(shí)驗(yàn)箱s3c2410 矩陣按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)和停止

    問題描述 按下第一個按鍵使步進(jìn)電機(jī)可以正轉(zhuǎn)、第二個反轉(zhuǎn)反轉(zhuǎn)、第三個按鍵停止 矩陣按鍵控制 畫了張矩陣按鍵的內(nèi)部電路圖: 矩陣按鍵實(shí)物圖: ABC 按鍵右邊的就是步進(jìn)電機(jī)。 按鍵第一行連接的是寄存器 GPFDAT0 的端口 第二行連接的是寄存器 GPFDAT2 的端口 第三行連接的是

    2024年02月09日
    瀏覽(93)
  • 20230705點(diǎn)亮STC32G實(shí)驗(yàn)箱9.6(STC32G12K128)開發(fā)板的跑馬燈LED(深入了解)

    20230705點(diǎn)亮STC32G實(shí)驗(yàn)箱9.6(STC32G12K128)開發(fā)板的跑馬燈LED(深入了解)

    08第六集:LED閃爍第六集:LED閃爍和花式點(diǎn)燈上和花式點(diǎn)燈上.mp4 09第六集:LED閃爍和花式點(diǎn)燈下.mp4 【大文哥學(xué)習(xí)32位8051】20230704【沖哥視頻】第六集的晶振時鐘的學(xué)習(xí)困惑 2023/7/5 17:36 delay_ms(3000); 刷機(jī)的時候如果使用11.0592M的Fosc,3秒鐘的延遲大概7秒鐘。 刷機(jī)的時候如果使用

    2024年02月12日
    瀏覽(98)
  • 基于 matplotlib 實(shí)現(xiàn)的基本排序算法的動態(tài)可視化項(xiàng)目源碼,通過 pyaudio 增加音效,冒泡、選擇、插入、快速等排序

    基于 matplotlib 實(shí)現(xiàn)的基本排序算法的動態(tài)可視化項(xiàng)目源碼,通過 pyaudio 增加音效,冒泡、選擇、插入、快速等排序

    依托 matplotlib 實(shí)現(xiàn)的基本排序算法的動態(tài)可視化,并通過 pyaudio 增加音效。 安裝 在使用之前請先檢查本地是否存在以下庫: matplotlib pyaudio fire requirements.txt 中包含了上述的庫 使用 目前本項(xiàng)目僅提供了以下排序算法 冒泡排序 選擇排序 插入排序 快排 歸并排序 命令行工具 命

    2024年02月08日
    瀏覽(39)
  • 圖解基礎(chǔ)排序算法(冒泡、插入、選擇)(山東大學(xué)實(shí)驗(yàn)二)

    圖解基礎(chǔ)排序算法(冒泡、插入、選擇)(山東大學(xué)實(shí)驗(yàn)二)

    ? 目錄 ?前言: ???冒泡排序: 設(shè)定: 分類: 起源: 圖解冒泡: 圖中綠色: 圖中橙色: 整體思路: 交換思路: 核心代碼:? ???圖解插入: 設(shè)定: 插入思路: 整體思路: 核心代碼: ??圖解選擇:? 設(shè)定: 整體思路: 核心代碼:? ??山東大學(xué)實(shí)驗(yàn)二完整代碼:?

    2024年01月17日
    瀏覽(28)
  • 【C++實(shí)戰(zhàn)小項(xiàng)目】通訊錄(四) 冒泡排序通過string首字母排序多個數(shù)組

    【C++實(shí)戰(zhàn)小項(xiàng)目】通訊錄(四) 冒泡排序通過string首字母排序多個數(shù)組

    ???♂?iecne個人主頁: : iecne的學(xué)習(xí)日志 ??每天 關(guān)注 iecne的作品,一起進(jìn)步 ??一起學(xué)習(xí),必看iecne ??希望大家多多支持??一起進(jìn)步呀! 首先制作一款通訊錄我們可以將它分為以下部分 增加聯(lián)系人 刪除聯(lián)系人 查找聯(lián)系人 修改聯(lián)系人 打印通訊錄 排序通訊錄 這一期我們

    2024年01月19日
    瀏覽(94)
  • Java實(shí)現(xiàn):選擇排序、冒泡排序、插入排序

    本文我們將使用Java編程語言實(shí)現(xiàn)經(jīng)典的選擇排序、冒泡排序和插入排序算法,并用對數(shù)器進(jìn)行測試。 選擇排序的基本思想是:遍歷數(shù)組,每次找到數(shù)組中最小的元素,將其放到數(shù)組的前端。接著,在剩余的元素中繼續(xù)尋找最小的元素,將其放在已找到的最小元素之后。重復(fù)

    2024年02月02日
    瀏覽(19)
  • 【排序算法】C語言實(shí)現(xiàn)選擇排序與冒泡排序

    【排序算法】C語言實(shí)現(xiàn)選擇排序與冒泡排序

    這里是阿輝算法與數(shù)據(jù)結(jié)構(gòu)專欄的第一篇文章,咱們就從排序算法開始講起,排序算法有很多大致分為兩類:基于比較的排序和非比較的排序 基于比較的排序:冒泡、選擇、插入、希爾、堆、歸并、隨機(jī)快排 非比較的排序:桶排序 以上的排序算法阿輝都會講到,今天阿輝主

    2024年02月04日
    瀏覽(19)
  • 【C++實(shí)現(xiàn)插入排序、希爾排序、冒泡排序、快速排序、選擇排序】

    【C++實(shí)現(xiàn)插入排序、希爾排序、冒泡排序、快速排序、選擇排序】

    使用C++實(shí)現(xiàn)來插入排序、希爾排序、冒泡排序、快速排序、選擇排序算法。 插入排序,一般也被稱為直接插入排序。對于少量元素的排序,它是一個有效的算法 。插入排序是一種最簡單的排序方法,它的基本思想是將一個記錄插入到已經(jīng)排好序的有序表中,從而生成一個新

    2024年02月06日
    瀏覽(31)
  • 冒泡排序算法實(shí)現(xiàn)步驟

    算法實(shí)現(xiàn)的過程: 1. 定義問題: ? ?- 算法是用來解決某一特定計算問題的方法步驟。例如,對于排序問題,我們需要一個算法對一組無序的整數(shù)進(jìn)行排序。 2. 設(shè)計算法: ? ?- 冒泡排序是一種基礎(chǔ)的排序算法。它的設(shè)計思路是重復(fù)遍歷要排序的數(shù)列,每次遍歷時都將相鄰兩

    2024年04月11日
    瀏覽(26)
  • Python實(shí)現(xiàn)冒泡排序

    以下是使用Python實(shí)現(xiàn)冒泡排序的示例代碼: 在上述代碼中,bubble_sort 函數(shù)接受一個列表作為輸入,并使用冒泡排序算法對其進(jìn)行排序。算法通過比較相鄰元素的大小,并在需要時交換它們的位置來實(shí)現(xiàn)排序。外層循環(huán)控制了排序的輪數(shù),內(nèi)層循環(huán)則遍歷未排序部分,進(jìn)行相鄰

    2024年02月16日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包