CODE??SEGMENT
目前成都創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、日照網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
ASSUME????CS:CODE
ORG???????100H
START:??PUSH??????CS
POP???????DS
PUSH??????CS
POP???????ES
MOV???????AL,255
MOV???????BL,255
CALL??????MULT
CALL??????DISPAX
MOV???????AH,4CH
INT???????21H
;====================================================
;?被乘數(shù)放置于al?中,?乘數(shù)放置于?bl中,?結(jié)果放置于ax中
MULT??PROC??????NEAR
PUSH??????DX
PUSHF
MOV???????AH,0
MOV???????DX,0
CMP???????BL,0
JE????????@MULTEXIT
@MULT1:??SHR???????BL,1
JNC???????@MULT2
ADD???????DL,AL
ADC???????DH,AH
@MULT2:??SHL???????AL,1
RCL???????AH,1
CMP???????BL,0
JNE???????@MULT1
MOV???????AH,DH
MOV???????AL,DL
POPF
POP???????DX
RET
@MULTEXIT:
MOV???????AX,0
POPF
POP???????DX
RET
MULT??ENDP
;==================================????????
;?將要顯示的無符號數(shù)置于?ax?中?
DISPAX??PROC??????NEAR
PUSH??????AX
PUSH??????BX
PUSH??????CX
PUSH??????DX
PUSH??????SI
PUSH??????DI
PUSH??????BP
PUSHF
PUSH??????DS
PUSH??????CS
POP???????DS
MOV???????BYTE?PTR?NZ,0
PUSH??????AX
LEA???????SI,DIVARR
MOV???????CX,5
@1:
POP???????AX
MOV???????DX,0
MOV???????BX,[SI]
DIV???????BX
PUSH??????DX
CMP???????AL,0
JNE???????@2
CMP???????BYTE?PTR?NZ,1
JE????????@2
CMP???????CX,1
JE????????@2
MOV???????DL,20H
JMP???????@3
@2:
ADD???????AL,30H
MOV???????DL,AL
MOV???????BYTE?PTR?NZ,1
@3:
MOV???????AH,2
INT???????21H
INC???????SI
INC???????SI
LOOP??????@1
POP???????DX
POP???????DS
POPF
POP???????BP
POP???????DI
POP???????SI
POP???????DX
POP???????CX
POP???????BX
POP???????AX
RET
DIVARR??DW????????10000,1000,100,10,1
NZ??DB????????0
DISPAX??ENDP
;==============================================
CODE??ENDS
END???????START
#include stdio.h
double add(double* a,double*b){return *a+*b; }
double multiply(double*a,double*b){return (*a)*(*b) ;}
int main()
{
double p,q;
printf("請輸入兩個數(shù):\n");
scanf("%f,%f",p,q);
printf("和=%f,積=%f",add(p,q),multiply(p,q));
}
除法與乘法類似,只不過將左移改為右移,加改成減。實(shí)際上減也是通過取補(bǔ)碼后再加,不夠減后就停止,得出余數(shù)。詳細(xì)的是:(1)首先用“1”作為商試一下,相當(dāng)于用“1”乘以除數(shù)“110”,然后把所得到的各位再與被除數(shù)的前4位“1001”相減。按照減法運(yùn)算規(guī)則可以得到的余數(shù)為“011”。 (2)因?yàn)椤?11”與除數(shù)“110”相比,不足以被除,所以需要向低取一位,最終得到“0111”,此時的數(shù)就比除數(shù)“110”大了,可以繼續(xù)除了。同樣用“1”作為商去除,相當(dāng)于用“1”去乘除數(shù)“110”,然后把所得的積與被除數(shù)中當(dāng)前四位“0111”相減。根據(jù)以上介紹的減法運(yùn)算規(guī)則可以得到此步的余數(shù)為“1”。 (3)因?yàn)椤?”要遠(yuǎn)比除數(shù)“110”小,被除數(shù)向前取一位后為“11”,仍不夠“110”除,所以此時需在商位置上用“0”作為商了。 (4)然后在被除數(shù)上繼續(xù)向前取一位,得到“110”。此時恰好與除數(shù)“110”完全一樣,結(jié)果當(dāng)然是用“1”作為商,用它乘以除數(shù)“110”后再與被除數(shù)相減,得到的余數(shù)正好為“0”。證明這兩個數(shù)能夠整除。 這樣一來,所得的商(1101)2就是兩者相除的結(jié)果。
—不考慮陣列實(shí)現(xiàn);
—用“加法-移位”的重復(fù)運(yùn)算方法實(shí)現(xiàn)乘法和除法。
(1)乘法
實(shí)現(xiàn)無符號數(shù)乘法運(yùn)算:
要求能實(shí)現(xiàn)4位乘法(指被乘數(shù)4位,乘數(shù)4位,乘積為8位)運(yùn)算的功能;
(2)除法
實(shí)現(xiàn)無符號除法運(yùn)算:
要求能實(shí)現(xiàn)4位除法的功能(被除數(shù)8位,除數(shù)4位,商4位);
!! 研究除法算法時的兩點(diǎn)提示:
A、可考慮使用加減交替算法,而不是使用恢復(fù)余數(shù)法;
B、注意算法中化減為加的方法。
/*Note:YourchoiceisCIDE*/#include"stdio.h"#include"stdlib.h"#include"ctype.h"intn=0;charrecord[20];floatproduct();floatchange();floatmuli(){floatsumm;summ=product();while(record[n]=='-'||record[n]=='+'){switch(record[n]){case'+':n++;summ+=product();break;case'-':n++;summ-=product();break;}}returnsumm;}floatproduct(){floatsump;sump=change();while(record[n]=='*'||record[n]=='/'){switch(record[n]){case'*':n++;sump*=change();break;case'/':n++;sump/=change();break;}}returnsump;}floatchange(){floatsumc;charrec[20],i=0;if(record[n]=='('){n++;sumc=muli();}if(record[n]==')')n++;while(isdigit(record[n])||record[n]=='.'){while(isdigit(record[n])||record[n]=='.')rec[i++]=record[n++];rec[i]='\0';sumc=atof(rec);}returnsumc;}voidmain(){while(1){n=0;scanf("%s",record);printf("%s=%g\n",record,muli());}}這個是比較簡單的。。。但是有點(diǎn)難理解。。。不過運(yùn)行絕對正確。。還支持括號。。。但是在這個程序里面我加沒有出錯處理。。。另一種方法是用棧寫。。。這個好理解。。但是麻煩。。。
新聞名稱:go語言加法實(shí)現(xiàn)乘法,go語言 方法
文章鏈接:http://jinyejixie.com/article36/dsecjsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、商城網(wǎng)站、動態(tài)網(wǎng)站、做網(wǎng)站、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)