導航:首頁 > 編程知識 > 電腦編程題有哪些

電腦編程題有哪些

發布時間:2023-05-08 19:18:17

1. 計算機應用系統方面的編程題

解:MOV A,R1

MOV R0,A

(2)外部RAM 20H單元內容送R0。

解:MOV R0,#20H

MOVX A,@R0

MOV R0,A

(3)外部RAM 20H單元內容送內部RAM 20H單元。

解:MOV R0,#20H

MOVX A,@R0

MOV @R0,A

(4)外部RAM 1000H單元內容送內部RAM 20H單元。

解:MOV DPTR,#1000H

MOVX A,@DPTR

MOV 20H,A

(5)外部ROM 2000H單元內容送R0。

解:MOV DPTR,#2000H

CLR A

MOVC A,@A+DPTR

MOV R0,A

(6)外部RAM 2000H單元內容送內部RAM 20H單元。

解:MOV DPTR,#2000H

CLR A

MOVC A,@A+DPTR

MOV 20,A

(7)外部RAM 2000H單元內容送外部RAM 20H單元。

解:MOV DPTR,#2000H

CLR A

MOVC A,@A+DPTR

MOV R0, #20H

MOV @R0,A

2-2 已知A=7AH,R0=30H,(30H)=A5H,PSW=81H。問執行以下各指令的結果(每條指令都以題中規定的數據參加操作)。

(1)XCH A,R0 A=30H,R0=7AH, P=0

(2)XCH A,30H A=A5H, (30H)=7AH, P=0

(3)XCH A,@R0 A=A5H, (30H)=7AH, P=0

(4)XCHD A,@R0 A=75H, (30H)=AAH, P=1

(5)SWAPA A=A7H P=1

(6)ADD A,R0 A=AAH Cy=0 OV=1 P=0

(7)ADD A,30H A=1FH Cy=1 OV=0 P=1

(8)ADD A,#30H A=AAH Cy=0 OV=1 P=0

(9)ADDC A,30H A=20H Cy=1 OV=1 P=1

(10)SUBB A,30H A=D4H Cy=1 OV=1 P=0

(11)SUBB A,#30H A=49H Cy=0 OV=0 P=1

(12)DA A A=80H Cy=1 P=1

(13)RL A A=F4H Cy=1 P=1

(14)RLC A A=F5H Cy=0 P=0

(15)CJNE A,#30H,00 A=7AH Cy=0 P=1

(16)CJNE A,#30H,00 A=7AH Cy=1 P=1

2-3 設內部RAM的30H單元內容為40H,即(30H)=40H,還知(40H)=10H,(10H)=00H,埠P1=CAH,問執行以下指令後各有關存貯器單元、寄存器及埠的內容(即R0,R1,A,B,P1,40H,30H及10H單元)。

MOV R0,#30H

MOV A,@R0

MOV R1,A

MOV B,@R1

MOV @R1,P1

MOV P2,P1

MOV 10H,#30H

MOV 30H,10H

解:每條指令執行後的結果依次如下列所示:R0=30H,A=40H,R1=40H,B=10H,(40H)=CAH,P2=CAH,(10H)=20H,(30H)=20H。

由此可知執行後的各單元內容:R0=30H,R1=40H,A=40H, B=10H, P1=CAH, (40H)=CAH,(30H)=20H,(10H)=20H。

2-4 設R0=17H,A=83H,(17H)=34H,問執行以下指令後,A=?

ANL A,#17H

ORL 17H,A

XRL A,@R0

CPL A

解:此題是為了熟悉邏輯運算指令。各條指令的執行結果如下:

A←83H∧17H=10000011∧00010111=03H

(17H) ←34H∨03H=00110100∨00000011=37H

A←03H⊕37H=00000011⊕00110111=34H

A←A=00110100=CBH

所以程序執行後,A=CBH

2-5 試編寫程序,將內部RAM的20H,21H,22H三個連續單元的內容依次存入2FH,2EH和2DH單元。

解:此題可以直接用傳送指令來完成:

MOV 2FH,20H

MOV 2EH,21H

MOV 2DH,22H

當然也可以用循環程序來做:

MOV R0,#20H ;源數據區首地址

MOV R1,#2FH ;目的數據區首地址

MOV R3,#03H ;數據塊長度

LOOP: MOV A,@R0

MOV @R1,A

INC R0

DEC R1

DJNZ R2,LOOP

SJMP $

2-6 編寫程序,進行兩個16位數的減法:6F5DH-13B4H。結果存至內部RAM的30H和31H單元,30H存差的低8位。

解:程序如下:

MOV A,#5DH

CLR C

SUBB A,#0B4H

MOV 30H,A

MOV A,#6FH

SUBB A,#13H

MOV 31H,A

SJMP $

由於MCS=51指令系統中,減法指令只能完成帶借位減法,所以在開始做減法時,一般都要對進位位Cy清0。

2-7 編寫程序,若累加器A的內容分別滿足以下條件時,則程序轉至LABEL存貯單元。設A中存的是無符號數。

1、A 10

解:此題可直接用比較條件轉移指令來完成,有關的程序語句如下:

CJNE A,#0AH,00H

JNG LABEL

比較條件轉移指令根據A-0AH的結果來位置Cy的值,只要A 10,減法就不需要借位,即Cy=0。再用一條「JNC」指令就可以決定是否要轉移至LABEL。偏移量00H表示比較後無論結果如何都先執行下一條語句。

2、A>10

解:這時如果仍然與0AH比較,則無法區分A >10(要轉移)和A=10(不轉移)。當然也可以增加其它的指令(如累加器判斷零條件轉移語句等)來完成所需的功能,但會使語句增多,程序不夠簡潔。不如直接與0BH(十進制數11)比較,比較之後A 11都使Cy=0,相當於A>10才使Cy=0。仍用兩條語句就能完成所需功能

CJNE A,#0BH,00H

JNG LABEL

3、A 10

解:這種情況與題(2)相似,可直接與11作比較,但這時是Cy=1時才轉移。

CJNE A,#0BH,00H

JC LABEL

4、A<10

解:這時只需直接和10作比較即可,與題(1)類似:

CJNE A,#0AH,00H

JC LABEL

2-8 已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。問此時執行RET指令後,SP=?PC=?

解:MCS-51系統中,堆棧是向上生長的,故出棧操作時堆棧指針要減小。執行RET指令的過程如下:

PC15-8 (SP) 即PC15-8=(25H)=34H

SP SP-1 即SP=24H

PC7-0 (SP) 即PC7-0=(24H)=12H

SP SP-1 即SP=23H

結果為:SP=23H,PC=3412H

2-9 若SP=25H,PC=2345H,標號LABEL所在的地址為3456H,問執行長調用指令LCALL LABEL後,堆棧指針和堆棧的內容發生什麼變化?PC的值等於什麼?

解:長調用指令完成兩個功能:把下一條指令地址堆入堆棧,並把所調用子程序的入口地址賦予程序計數器PC。過程如下:

PC PC+3 所以PC=2345H+3=2348H

SP SP+1 所以SP=26H

(SP) PC7-0 所以(26H)=48H

SP SP+1 所以SP=27H

(SP) PC15-8 所以(27H)=23H

PC LABEL 所以PC=3456H

結果應為:SP=27H,(26H)=48H,(27H)=23H,PC=3456H。

2-10 上題的LCALL指令能否直接換成ACALL指令,為什麼?如果使用ACALL指令,則可調用的地址范圍是什麼?

解:ACALL指令只能在2K位元組范圍內調用。具體來講,要求PC+2後,PC的高5位與調用地址LABEL的高5位相同。或者說執行ACALL以後的PC值和調用地址應在同一頁內(每頁地址范圍為2K位元組)。在本題中:

PC+2=2345+2=2347H,高5位00100

而 LABEL=3456H, 高5位00110

兩者不相等,不在同一頁內,所以不能直接換成ACALL指令

如果使用ACALL指令,則可調用地址最小值為2000H,最大值為27FFH。即高5位地址保持00100不變,低11位地址可以從全0變為全1。地址范圍為2K位元組。

2-11 試編寫程序,查找在內部RAM的20H-50H單元中是否有0AAH這一數據。若有,則將51H單元置為01H;若未找到;則使51H單元置為0。

解:這個題可以有兩種基本的解法。其一是先計算出數據塊的長度,然後再作循環和比較,程序如下:

CLR C

MOV R0,#20H ;R0中為數據塊首地址

MOV A,#50H ;數據塊末地址

SUBB A,R0

INC A

MOV R1,A ;R1存數據塊長度

LOOP1:CJNE @R0,#0AAH,LOOP2

MOV 51H,#01H ;找到置(51H)=01H

SJMP LOOP3

LOOP2: ING R0

DJNZ R1,LOOP1

MOV 51H,#00H ;未找到,置(51H)=01H

LOOP3: SJMP $

第二種解法則直接用比較條件轉移指令判斷是否已經完成最後一次比較。這時MCS-51指令系統的特點之一。程序如下:

MOV R0,#20H ;R0存數據塊首地址

LOOP1: CJNE @R0,#0AAH,LOOP2 ;比較

MOV 51H,#01H ;找到,置(51H)=01H

SJMP LOOP3

LOOP2: ING R0

DJNZ R0,#51H,LOOP1 ;未比較完則循環

MOV 51H,#00H ;未找到,置(51H)=01H

LOOP3: SJMP $

2-12 試編寫程序,查找在內部RAM的20H-50H單元中出現00H的次數,並將查找的結果存入51H單元。

解:此題的解法與上題相似,採用第二種解法,程序如下:

MOV R0,#1FH

MOV R1,#00H ;R1用作計數器

LOOP1: ING R0

CJNE @R0,#00H,LOOP2

INC R1 ;找到一個00H,計數器加1

LOOP2: CJNE @R0,#50H,LOOP1 ;未比較完則循環

MOV 51H,R1 ;存比較結果

SJMP $

2-13 試編寫程序,求20H單元和21H單元中兩個補碼數差的絕對值,即 。結果保留在A中。若計算結果出現溢出,則置22H單元為0FFH,否則,22H應為00H。

解:可直接用減法指令來完成減法,然後依據差的符號來求絕對值,若差為正數,則差就是所求絕對值。若差為負數,則求反加一之後就可得到絕對值。當然減法之後先要判斷是否溢出。若溢出,則只需置溢出標記:使(22H)=0FFH即可。程序如下:

CLR C

MOV 22H,#0FFH

MOV A,20H

SUBB A,21H

JB OV,NEXT

JNB ACC.7,NEXT1 ;差為正則轉移

CPL A ;差為負,求補為絕對值

ING A

NEXT1:MOV 22H.,#00H

NEXT: SJMP $

2-14 試編寫程序,求20H,21H,22H單元的三個補碼數差得絕對值,即 。結果保留在A中。若運算出現溢出,則置23H單元為0FFH;否則,置23H單元為00H。

解:此題的解法與上題相似。只是每次減法以後都要判斷是否出現溢出,而不是做完兩次減法以後才判斷溢出。因為有可能第一次減法以後已經溢出,再作一次減法以後反倒沒有溢出,而這時的結果實際上已經不正確了。例如,64-(-64)-(-1)=129。結果已經溢出,但分兩步運算時,先由

64-(-64)=01000000-11000000=10000000

這時已經出現溢出,OV=1。若再作第二次減法,則結果為:

10000000-11111111=10000001

溢出標志反而被清零(因為負數減負數不可能溢出),但實際的結果並不正確。所以,需要每作完一次減法運算就檢查溢出標志。程序如下:

CLR C

MOV 23H,#0FFH ;先置溢出標志

MOV A,20H

SUBB A,21H ;第一次相減

JB OV,NEXT ;溢出則結束

CLR C ;准備第二次相減

SUBB A,22H ;第二次相減

JB OV,NEXT ;溢出則結束

JNB ACC.7,NEXT1 ;差為正則轉移

CPL A ;求反加一

ING A

NEXT1:MOV 23H.,#00H

NEXT: SJMP $

2-15 有一個16位二進制數,高8位存於21H單元,低8位存於20H單元。試問:(1)執行以下程序段,完成什麼邏輯功能?(2)能否用MOV指令替代其中的XCH指令而不改變程序的邏輯功能?寫出相應的程序段。(3)這兩個程序段的執行結果是否完全相同?差別在那裡?

CLR C

XCH A,21H

RRC A

XCH A,21H

XCH A,20H

RRC A

XCH A,20H

解:(1)程序完成的邏輯功能是使21H和20H中的16位二進制數右移一位,並使最高位為0,一般稱為邏輯右移一位。

(2)可以用MOV指令,修改後程序段如下:

CLR C

MOV A,21H

RRC A

MOV 21H,A

MOV A,20H

RRC A

MOV 20H,A

(3)有所差別。雖然從16位右移功能來說兩者的功能是相同的,但第一個程序段執行後,累加器A的內容仍維持原值,而第二個程序段執行後將改變A中的數值。

2-16 分析以下程序段的邏輯功能。若要用MOV指令代替其中的交換指令而不改變程序的邏輯功能,應如何進行修改?設20H中存放的是兩個四位二進制數。

MOV R1,#20H

XCHD A,@R1

ADD A,#01H

XCHD A,@R1

XCH A,@R1

ADD A,#01H

XCH A,@R1

解:程序的功能是將20H單元中的兩個四位二進制數分別加1,並且舍棄可能產生的進位。如(20H)=6AH,程序執行後位(20H)=7BH。又如(20H)=9FH,執行後(20H)=A0H。

不採用交換指令而要完成同樣的功能,可以有多種修改方法。以下僅為一例:

MOV R1,#20H

XCHD A,@R1

ADD A,#01H ;低4位加1

JB AC,NEXT ;判斷低四位有無進位

ADD A,#01H ;高4位加1

NEXT: MOV @R1,A ;送回20H單元

2-17 分析以下程序段的運行結果。若是將其中的DA A指令取消,則結果會有什麼不同?

CLR C

MOV 20H,#99H

MOV A,20H

ADD A,#01H

DA A

MOV 20H,A

解:程序運行結果是A=00H,Cy=1,(20H)=00H。

取消DAA指令後,運行結果為A=9AH,Cy=0,(20H)=9AH。

2-18 以下的兩個程序段中,R2內所存入的都是兩位16進制數。試問這兩個程序段各進行多少次循環?

MOV R2,#60H

LOOP:……

……

DJNZ R2,LOOP

SJMP $

MOV R2,#60H

LOOP:……

2. 互聯網+項目編程題目有哪些

互聯網+項目編程題目有,移動數字游戲,學生信息管理系統,超市庫存管理系統,電話號碼存儲系統等等。

互聯網+是指在創新2.0(信息時代、知識社會的創新形態)推動下由互聯網發展的新業態,也是在知識社會創新2.0推動下由互聯網形態演進、催生的經濟社會發展新形態。

3. 計算機二級C語言考試內容有那些

二級計算機是國家計算機等級考試的一部分,主要考察的是C語言的計算機編程能力。考核內容包括計算機語言與基礎程序設計能力,要求參試者掌握一門計算機語言。具體考點如下:1、C語言程序的結構。需重點了解程序的構成,main函數和其他函數,源程序的書寫格式。2、數據類型及其運算。包括C的數據類型(基本類型,構造類型,指針類型,無值類型)及其定義方法以及C運算符的種類、運算優先順序和結合性等。3、基本語句。需要了解掌握表達式語句,空語句,復合語句。以及輸入輸出函數的調用,正確輸入數據並正確設計輸出格式等。4、選擇結構程序設計,各類語句以及選擇結構嵌套。5、循環結構程序設計,理解各類循環、語句以及循環的嵌套。6、會一維數組和二維數組的定義、初始化和數組元素的引用。7、庫函數的正確調用,函數的定義方法、正確調用。8、文件操作,如文件的打開、關閉、讀寫、定位。9、地址與指針變數的概念,地址運算符與間址運算符。10、結構體與共同體。11、位運算符的含義和使用。12、編譯預處理等。

閱讀全文

與電腦編程題有哪些相關的資料

熱點內容
4558升級代換 瀏覽:589
泰國支持什麼網路 瀏覽:939
ps鉛筆畫用什麼工具上色 瀏覽:108
5s升級ios93會不會卡 瀏覽:775
驅動安裝完了找不到文件夾 瀏覽:717
金醫保app可以預約哪些醫院 瀏覽:840
如果快速刪掉電腦桌面文件 瀏覽:309
網路優化系統是什麼 瀏覽:320
海康威視數據怎麼刪除 瀏覽:826
ug編程哪個視圖好用 瀏覽:866
福州龍泉哪裡有學編程的 瀏覽:513
消保整改文件 瀏覽:145
重度貧血數據是多少 瀏覽:323
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385

友情鏈接