COP2000實現BCD碼的加法

2021-06-28 22:27:44 字數 4856 閱讀 3418

mov a,#29h       ;輸入六位數的被加數存入三個位元組中

mov 0f0h,a

mov a,#99h

mov 0f1h,a

mov a,#99h

mov 0f2h,a

mov a,#99h ;輸入六位數的加數存入三個位元組中

mov 0f3h,a

mov a,#99h

mov 0f4h,a

mov a,#99h

mov 0f5h,a

mov a,#00h ;計數字初始化賦值為0

mov 0f6h,a

mov a,#00h ;進製位初始化賦值為0

mov 0f7h,a

mov a,0f2h ;取被加數的低位位元組放入r0暫存器中

mov r0,a

mov a,0f5h ;取加數的低位位元組放入r1暫存器中

mov r1,a

jmp tt1 ;乙個位元組中的低位相加函式入口

t1: mov a,r2 ;將低位計算的結果從r2暫存器中取出存放在0f8h位址儲存器中

mov 0f8h,a

jmp tt2 ;乙個位元組中高位相加函式入口

t2: mov a,r2 ;將高位計算的結果從r2暫存器中取出放在0f9h位址儲存器中

mov 0f9h,a

mov a,0f1h ;取被加數的中間位位元組放入r0暫存器

mov r0,a

mov a,0f4h ;取加數的中間位位元組放入r1暫存器中

mov r1,a

jmp tt1 ;進入位元組中低位位相加函式的入口

t3: mov a,r2 ;將位元組中計算結果從r2中取出放置0fah中去

mov 0fah,a

jmp tt2 ;進入位元組中高位的計算函式入口

t4: mov a,r2 ;將計算結果從r2中取出放置0fbh中。

mov 0fbh,a

mov a,0f0h ;將被加數高位位元組取出放入r0暫存器中

mov r0,a

mov a,0f3h ;將加數高位位元組取出放入r1暫存器中

mov r1,a

jmp tt1 ;進入位元組中低位計算函式入口

t5: mov a,r2 ;將低位計算的結果從r2中取出放入儲存位址為0fch中

mov 0fch,a

jmp tt2 ;進入位元組中高位計算函式入口

t6: mov a,r2 ;將結果從r2暫存器中存入以0fdh為位址的儲存器中

mov 0fdh,a

; 結果輸出

mov a,0f8h ;輸出低位結果到暫存器r3

add a,0f9h

mov r3,a

mov a,0fah ;輸出結果中位到暫存器r2

add a,0fbh

mov r2,a

mov a,0fch ;輸出結果中高位到暫存器r1

add a,0fdh

mov r1,a

mov a,0f7h ;進製位結果輸出到暫存器r0中

mov r0,a

loop: ;程式結束

jmp loop

tt1: ;位元組中低位位計算

mov a,0f6h ;計數字加一

add a,#01h

mov 0f6h,a

mov a,r0 ;將被加數從r0暫存器取出

and a,#0fh ;取出被加數位元組中的低位數

mov r2,a ;將取出的低位存至r2暫存器中

mov a,r1 ;取出加數從r1暫存器取出

and a,#0fh ;取出加數字節中低位數

mov r3,a ;將取出的低位存至r3暫存器中

add a,0f7h ;與進製位相加

add a,r2 ;與被加數相加

mov r2,a ;將結果儲存至r2暫存器中

and a,#10h ;將結果與10h相與去出第五數字

sub a,#10h 將取出的數字與10h相減判斷是否有進製

jz ttt1 ;有進製跳轉到進製處理子函式

mov a,#09h ;將09h賦給暫存器a

sub a,r2 ;比較r2中的數值與09h的數值的大小

jc ttt2 ;大於09h說明有進製跳轉到結果為0ah~0fh之間的處理函式

mov a,#00h ;當範圍落到00h~09h之間時,將進製位清零。

mov 0f7h,a

jmp ttt3 ;加法處理結束,進入返回主調函式判斷階段

ttt1: ;當結果結果超過10h時進行的處理子函式

mov a,r2

and a,#0fh

add a,#06h ;將運算結果少加的06h加上

mov r2,a

mov a,#10h ;將進製位賦值為10h,等待高位計算時用該進製位

mov 0f7h,a

jmp ttt3 ;低位加法結束,進入結束返回主調函式判斷函式

ttt2: ;當結果處於0ah~0fh時處理的子函式

mov a,r2

sub a,#0ah ;減去0ah保留下應當當留存的數值

mov r2,a ;將處理數值儲存在r2暫存器中

mov a,#10h ;將進製位賦值為10h,等待高位處理

mov 0f7h,a

ttt3: ;返回主調函式判斷函式

mov a,0f6h ;取出標記位裡面儲存的數值

sub a,#02h ;將其與02h進行求查,來判斷返回主調函式的位置

jc t1

jz t3

jmp t5

tt2: ;位元組內高位處理函式

mov a,r1 ;從r1暫存器中取出

and a,#0f0h ;取出該加數的高位數

mov r3,a ;將高位數存至r3暫存器

mov a,r0 ;從r0暫存器中取出被加數

and a,#0f0h ;取出被加數的高位數

mov r2,a ;將取出的高位數存至r2暫存器

add a,0f7h ;同時與進製位相加

add a,r3 ;再與被加數的結果

jc ttt4 ;判斷是否產生進製,若有進製就跳轉到有進製處理函式ttt4

mov r2,a ;如果沒有進製就將結果存至r2暫存器

mov a,#90h ;判斷結果與90h的大小

sub a,r2

jc ttt5 ;大於90h就產生進製,就跳轉到ttt5

mov a,#00h ;小於90h就將進製位賦值為0

mov 0f7h,a

jmp ttt6 ;位元組中高位數加法結束進入返回主調函式階段

ttt4: ;當相加有進製時的處理函式

add a,#60h ;計算的結果加上60h

mov r2,a ;並將結果存至r2暫存器

mov a,#01h ; 將進製位賦值為01h,

mov 0f7h,a

jmp ttt6 ;位元組高位相加結束,進入返回主調函式判斷函式

ttt5: ;相加的結果範圍在a0h~f0h時,處理結果函式

mov a,r2 ;從暫存器r2中取出結果

sub a,#0a0h ;將結果的數值減去a0h

mov r2,a ;將結果存至r2暫存器

mov a,#01h ;將進製位賦值為01h,等待下一位元組低位數相加用

mov 0f7h,a

jmp ttt6 ;位元組高位數相加結束,進入返回主調函式判斷函式

ttt6: ;返回主調函式判斷函式

mov a,0f6h

sub a,#02h

jc t2

jz t4

jmp t6

shell命令實現 bc計算器

我們將程式分為兩個部分 1.主程式bcmain.c include headall.h 實現bc程式 其主要功能是用來進行加減乘除的運算 其本質是乙個客戶端 伺服器的模型 pipe dc stdin 0 bc dc stdout1 pipe dc 使用者首先會連線到bc並將bc連線到dc,呼叫dc程...

1017 A除以B(C語言實現)

本題要求計算 a b,其中 a 是不超過 1000 位的正整數,b 是 1 位正整數。你需要輸出商數 q 和餘數 r,使得 a b q r 成立。輸入在一行中依次給出 a 和 b,中間以 1 空格分隔。在一行中依次輸出 q 和 r,中間以 1 空格分隔。123456789050987654321 7...

PARTITION 2000實現方式

drop table test create table test id int,groupname varchar 20 name varchar 20 gage int insert into test select 1,中國 劉德華 34union select 2,越南 周杰倫 3union...