匯編語言課程設(shè)計----電子鬧鐘_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  電子鬧鐘</b></p><p><b>  課題內(nèi)容和要求</b></p><p>  題目描述:利用匯編語言實現(xiàn)一個可以在顯示器上顯示時、分、秒的電子時鐘,并能提供整點報時功能。</p><p>  基本要求:(1)設(shè)計一個基本的具有顯示時、分、秒的電子時鐘。</p><

2、;p> ?。?)到整點或預(yù)定的報警時間,能夠以不同的音樂進行報時,可以自行設(shè)置鬧鐘報警時間; </p><p> ?。?)實物演示時要求講出程序原理和設(shè)計思想;</p><p> ?。?)程序運行良好、界面清晰。</p><p>  提高要求:設(shè)計一個具有鐘面、分針、秒針的指針式鐘表,在圓盤上有均勻分布的60根刻度,對應(yīng)小時的刻度用不同顏色的長刻度區(qū)別,并且將

3、12、3、6、9對應(yīng)的拉丁文繪制于表盤外。</p><p>  設(shè)計提示:(1)指針式鐘表的繪制。將屏幕設(shè)置成圖形顯示方式,通過畫點、畫線,畫圓等基本程序完成鐘表的繪制。表盤圓周上刻度線段兩端點坐標(biāo)計算是鐘表繪制的核心部分。</p><p>  (2)秒針、分針、時針的轉(zhuǎn)動。是經(jīng)過一定的延時時間,通過在下一位置重新畫一個,在原來的位置用背景色覆蓋的方法實現(xiàn)。</p><

4、p> ?。?)音樂的演奏。利用CPU支持的外圍電路8254與8255,通過匯編程序改變8255的PB0,PB1口,接通揚聲器,使得計算機能夠發(fā)出一定頻率的聲音,同時通過8254的與8255連接的2號計數(shù)器控制指定頻率,從而達到控制揚聲器的音樂的效果。通過建立適當(dāng)?shù)难訒r程序達到一定時間后則改變2號計數(shù)器產(chǎn)生的方波的頻率,實現(xiàn)音樂程序的演奏。</p><p><b>  二、需求和思路分析</b

5、></p><p>  經(jīng)分析本次程序設(shè)計的主要內(nèi)容主要分為如下的幾個模塊:</p><p>  當(dāng)前時間的獲取并顯示,碼制轉(zhuǎn)換,設(shè)定鬧鐘報鳴的時間,不同頻率的鬧鈴聲,鐘表的繪制和并實現(xiàn)動態(tài)等模塊。其中鐘表的繪制和動態(tài)走動部分比較難是本次課程設(shè)計的提高部分,且改模塊可單獨形成一個模塊,所以放到最后進行考慮</p><p>  1時間的獲取可以用int 21h的

6、2ch功能,該功能調(diào)用DOS時間調(diào)用功能,功能號:2cH,小時,分鐘,秒數(shù)分別保存在,保存的形式是以二進制的形式,故顯示時要</p><p>  2碼制轉(zhuǎn)化利用ascii碼與二進制碼的關(guān)系ascii=二進制+30H</p><p>  3鬧鐘鳴叫主要利用8254的二號計數(shù)器和8255的PB0和PB1來設(shè)定</p><p>  4 鬧鐘的表盤,指針的繪制,并實現(xiàn)時針,

7、分針,秒針的走動。主要通過過圖形的畫點進行操作,并通過在固定的區(qū)域內(nèi)不斷的刷屏來實現(xiàn)。</p><p><b>  三、概要設(shè)計 </b></p><p>  (一)算法設(shè)計及重要程序流程圖</p><p><b>  1)程序整體流程</b></p><p>  2)edittime子程序流程圖

8、</p><p>  2)editmusic子程序</p><p>  3)打開和關(guān)閉揚聲器</p><p>  此處重要用到了8254和8255的相關(guān)知識,書中P238有相關(guān)代碼</p><p>  首先,應(yīng)該讀出8255的PB端口當(dāng)前的狀態(tài),將PB0和PB1分別置1,以讀修改寫的方式修改PB0和PB1接通揚聲器。</p>&

9、lt;p>  其次,利用8254的2號計數(shù)器產(chǎn)生XXX Hz 的方波,此處計數(shù)初值利用公式</p><p>  N=fclk1 /fout2</p><p>  對8254先寫低8位,再寫高8位,out2輸出方波</p><p>  最后,將8255的PB0和PB1回復(fù)位00,用AND AL,11111100B來修改</p><p> 

10、 4)bctd子程序的流程圖</p><p>  該子程序程序功能主要是實現(xiàn)二進制轉(zhuǎn)化成相應(yīng)BCD碼</p><p><b>  AX輸入?yún)?shù) </b></p><p>  AX輸出參數(shù),存放調(diào)整過的BCD碼 </p><p><b>  (二)變量名聲明</b></p><p&

11、gt;  data segment</p><p>  mess1 db ' ****************ASM ASSIGNMENT**************** ',0ah,0dh</p><p>  db ' ',0ah,0dh</p><p>  db ' ***************ELECTRONIC CL

12、OCK*************** ',0ah,0dh</p><p>  db ' ',0ah,0dh</p><p>  db ' ',0ah,0dh</p><p>  db ' *******Press C or c to edit the alarm time Press M or m to chang

13、e sound!**** ',0ah,0dh</p><p>  db ' ',0ah,0dh</p><p>  db ' ***********Press ESC button to exit*********** ',0ah,0dh,'$'</p><p>  tn db 'Please inpu

14、t the new time (hh:mm:ss):',0dh,0ah,'$'</p><p>  musicmess db 'Please choose the type of music:1(fast) 2(middle) 3(slow)',0dh,0ah,'$'</p><p>  mess2 db '*******Ti

15、me is:',0ah,0dh,'$'</p><p>  t_buff db 40 ;在數(shù)據(jù)段開一段時間顯示緩沖區(qū)</p><p><b>  db ?</b></p><p>  db 40 dup (?)</p><p>  temphor db ? ;存放鍵入的定時時間的小時</p&

16、gt;<p>  tempmin db ? ;存放鍵入的定時時間的分鐘</p><p>  tempsec db ? ;存放鍵入的定時時間的秒數(shù)</p><p>  music dw 800 ;存放默認(rèn)音樂的頻率數(shù)</p><p><b>  data ends</b></p><p>  stack s

17、egment </p><p>  db 100 dup(?) </p><p>  stack ends </p><p><b>  四、詳細設(shè)計 </b></p><p>  課題任務(wù)實現(xiàn)的源程序(可以是一組源程序,每個功能模塊采用不同的函數(shù)實現(xiàn)),源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,

18、重點功能部分要加上清晰的程序注釋。</p><p><b>  (一)</b></p><p><b>  1主函數(shù)代碼</b></p><p>  code segment </p><p>  assume cs:code,ss:stack,ds:data ;確定各個邏輯段的類型 </p&

19、gt;<p><b>  start: </b></p><p>  mov ax,data </p><p>  mov ds,ax </p><p>  call clear ;調(diào)用清屏子程序 </p><p>  display: ;時間顯示部分 </p><p>  mov

20、ax,data </p><p>  mov ds,ax </p><p>  mov bx,offset t_buff ;送t_buff的偏移地址到BX </p><p>  mov ah,2ch ;調(diào)用DOS時間調(diào)用功能,功能號:2cH,小時,分鐘,秒數(shù)分別保存在CH,CL,DH中 </p><p>  int 21h ;判斷時間是否相等

21、</p><p>  sub dh,1 ;秒鐘+1修正</p><p>  CALL CHECK</p><p>  mov al,ch ;小時數(shù)設(shè)定 </p><p><b>  mov ah,0 </b></p><p&g

22、t;  call bctd ;調(diào)用進制轉(zhuǎn)換子程序 二進制轉(zhuǎn)BCD碼子程序</p><p><b>  push ax </b></p><p>  and al,0f0h ;選取al高四位 </p><p>  mov cl,4 ;設(shè)置右循環(huán)的次數(shù) </p><p>  rol al,cl ;右循環(huán) </p>

23、<p>  or al,30h ;加30h得到ACSII碼 </p><p>  mov [bx],al ;將得到的結(jié)果送到t_buff緩沖區(qū) </p><p>  inc bx ;BX自加1,指針指向下一個緩沖區(qū)的下一個地址 </p><p><b>  pop ax </b></p><p>  and

24、 al,0fh ;選取低四位 </p><p>  or al,30h </p><p>  mov [bx],al ;將轉(zhuǎn)換后的低四位值送入緩沖區(qū)的第二個地址 </p><p><b>  inc bx </b></p><p>  ;------------------------------------------

25、---------------- </p><p>  mov al,':' ;顯示分隔符號 </p><p>  mov [bx],al </p><p><b>  inc bx </b></p><p>  ;---------------------------------------------

26、---------- </p><p>  mov ah,2ch </p><p><b>  int 21h </b></p><p>  mov al,cl ;分鐘數(shù)設(shè)定 </p><p><b>  mov ah,0 </b></p><p>  call bctd &

27、lt;/p><p><b>  push ax </b></p><p>  and al,0f0h </p><p><b>  mov cl,4 </b></p><p>  rol al,cl </p><p>  or al,30h </p><p&g

28、t;  mov [bx],al </p><p><b>  inc bx </b></p><p><b>  pop ax </b></p><p>  and al,0fh </p><p>  or al,30h </p><p>  mov [bx],al <

29、/p><p><b>  inc bx </b></p><p>  ;------------------------------------------------------------------------- </p><p>  mov al,':' ;顯示分隔符號 </p><p>  mov

30、[bx],al </p><p><b>  inc bx </b></p><p>  ;------------------------------------------------------------------------- </p><p>  mov ah,2ch ;秒設(shè)定 </p><p><b

31、>  int 21h </b></p><p>  mov al,dh </p><p><b>  mov ah,0 </b></p><p>  call bctd </p><p><b>  push ax </b></p><p>  and al

32、,0f0h </p><p><b>  mov cl,4 </b></p><p>  rol al,cl </p><p>  or al,30h </p><p>  mov [bx],al </p><p><b>  inc bx </b></p>&

33、lt;p><b>  pop ax </b></p><p>  and al,0fh </p><p>  or al,30h </p><p>  mov [bx],al </p><p><b>  inc bx </b></p><p>  ;---------

34、------------------------------------------------------------- </p><p>  mov al,'$' ;將字符串的結(jié)束位送至顯示緩沖區(qū)的最后一位 </p><p>  mov [bx],al </p><p>  ;-----------------------------------

35、------------------------------------- </p><p>  push bx ;置光標(biāo)位置 ,AH=2,BH=0,DH跟DL分別為行號與列號,并入棧保護BX </p><p>  mov ah,2 ;0~1用于此程序快下邊的 在下面的兩個置光標(biāo)位置</p><p><b>  mov bh,0 </b>

36、</p><p>  mov dh,17 </p><p>  mov dl,41 </p><p><b>  int 10h </b></p><p><b>  pop bx </b></p><p>  lea dx,t_buff ;送t_buff偏移地址到DX

37、,并調(diào)用DOS顯示功能,功能號為9 </p><p><b>  mov ah,9 </b></p><p>  int 21h ;至此當(dāng)前事前時間的顯示功能結(jié)束!</p><p>  push bx ;置光標(biāo)位置 </p><p><b>  mov ah,2 </b

38、></p><p><b>  mov bh,0 </b></p><p><b>  mov dh,0 </b></p><p><b>  mov dl,0 </b></p><p><b>  int 10h </b></p>&

39、lt;p><b>  pop bx </b></p><p>  lea dx,mess1 </p><p><b>  mov ah,9 </b></p><p>  int 21h ; 顯示mess1</p><p>  push bx ;置光標(biāo)位置

40、 </p><p><b>  mov ah,2 </b></p><p><b>  mov bh,0 </b></p><p>  mov dh,17 </p><p>  mov dl,21 </p><p><b>  int 10h </b>&

41、lt;/p><p><b>  pop bx </b></p><p>  lea dx,mess2 </p><p><b>  mov ah,9 </b></p><p>  int 21h ; 顯示mess2</p><p>  ;----------

42、------------------- </p><p>  call delay1 </p><p>  mov ah,1 ;調(diào)用鍵盤I/O中斷功能號1,獲取鍵值到AL </p><p><b>  int 16h </b></p><p>  cmp al,'c' ;是c鍵,轉(zhuǎn)到時間修改程序 <

43、/p><p>  je edittime </p><p>  cmp al,'C' ;是C鍵,轉(zhuǎn)到時間修改程序 </p><p>  je edittime</p><p>  cmp al,'m';是m鍵,轉(zhuǎn)到鬧鈴種類設(shè)定程序</p><p>  je editmusic</p&g

44、t;<p>  cmp al,'M' ;是M鍵,轉(zhuǎn)到鬧鈴種類設(shè)定程序</p><p>  je editmusic </p><p>  cmp al,1bh </p><p>  jz quit ;是ESC鍵,退出程序 </p><p>  jmp display </p><p>&l

45、t;b>  quit: </b></p><p>  mov ah,4ch ;程序終止功能號 </p><p><b>  int 21h </b></p><p><b>  ret </b></p><p><b>  2功能函數(shù)代碼</b></p&

46、gt;<p>  二進制轉(zhuǎn)BCD碼子程序</p><p>  bctd proc near ;二進制轉(zhuǎn)BCD碼子程序 </p><p><b>  ;AX輸入?yún)?shù) </b></p><p>  ;AX輸出參數(shù),存放調(diào)整過的BCD碼 </p><p>  mov dx,ax </p><p

47、><b>  mov ax,0 </b></p><p>  mov cx,16 ;設(shè)循環(huán)次數(shù) </p><p><b>  bctd1: </b></p><p>  clc ;清進位標(biāo)志C </p><p>  rcl dx,1 ;通過進位的循環(huán)右移 </p><p&g

48、t;  adc al,al ;帶進位加法 </p><p>  daa ;加法的十進制調(diào)整 </p><p>  xchg al,ah ;交換高、低八位 </p><p>  adc al,al </p><p><b>  daa </b></p><p>  xchg al,ah </p

49、><p>  loop bctd1 ;循環(huán)次數(shù)保存在CX里 </p><p><b>  ret </b></p><p>  bctd endp </p><p>  2)清屏clear子程序</p><p>  clear proc near </p><p>  push

50、 ax ;入棧保護現(xiàn)場 </p><p><b>  push bx </b></p><p><b>  push cx </b></p><p><b>  push dx </b></p><p>  mov ax,0600h ;ah=06(滾動)al=00(全屏空白)

51、</p><p>  mov bh,3eh ;設(shè)置背景顏色(2)和前景顏色(e) </p><p>  sub cx,cx </p><p>  mov dx,5f5fh </p><p><b>  int 10h </b></p><p>  pop dx ;出?;謴?fù)現(xiàn)場 </p>

52、<p><b>  pop cx </b></p><p><b>  pop bx </b></p><p><b>  pop ax </b></p><p><b>  ret </b></p><p>  clear endp <

53、;/p><p>  3)精確延遲時間子程序delay1</p><p>  delay1 PROC ;精確延遲時間子程序 </p><p>  MOV DX,04ffh ;循環(huán)次數(shù) </p><p>  up: XOR CX,CX </p><p><b>  a: NOP </b></p>

54、;<p><b>  LOOP a </b></p><p><b>  DEC DX </b></p><p><b>  JNZ up </b></p><p><b>  RET </b></p><p>  delay1 ENDP &

55、lt;/p><p>  4)設(shè)定定時時鐘edittime子程序</p><p>  edittime proc ;時間修改子程序 </p><p>  push ax ;入棧保護數(shù)據(jù) </p><p><b>  push bx </b></p><p><b>  push cx <

56、/b></p><p><b>  push dx </b></p><p><b>  pushf </b></p><p>  mov dx,offset tn ;顯示修改時間的格式提示 </p><p>  mov ah,09h </p><p><b>

57、;  int 21h </b></p><p>  mov dx,offset t_buff ;數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)輸入 </p><p>  mov ah,0ah </p><p><b>  int 21h </b></p><p>  and dx,0h </p><p>  lea

58、 bx,t_buff </p><p><b>  inc bx </b></p><p><b>  inc bx </b></p><p><b>  inc bx</b></p><p>  mov dh,[bx] </p><p>  sub d

59、h,30h </p><p><b>  inc bx </b></p><p>  mov dl,[bx] </p><p>  sub dl,30h </p><p>  mov cl,10 </p><p>  mov al,dh </p><p><b>

60、  mul cl </b></p><p><b>  add al,dl</b></p><p>  mov ch,al </p><p>  mov temphor,al</p><p><b>  inc bx </b></p><p><b> 

61、 inc bx </b></p><p>  mov dh,[bx] </p><p>  sub dh,30h </p><p><b>  inc bx </b></p><p>  mov dl,[bx] </p><p>  sub dl,30h </p><

62、;p>  mov cl,10 </p><p>  mov al,dh </p><p><b>  mul cl </b></p><p>  add al,dl </p><p>  mov cl,al </p><p>  mov tempmin,al</p><p

63、><b>  inc bx </b></p><p><b>  inc bx </b></p><p>  mov dh,[bx] </p><p>  sub dh,30h </p><p><b>  inc bx </b></p><p>

64、  mov dl,[bx] </p><p>  sub dl,30h </p><p>  mov cl,10 </p><p>  mov al,dh </p><p><b>  mul cl </b></p><p>  add al,dl </p><p>  m

65、ov dh,al </p><p>  mov tempsec,al</p><p>  popf ;出棧恢復(fù)數(shù)據(jù) </p><p><b>  pop dx </b></p><p><b>  pop cx </b></p><p><b>  pop bx &

66、lt;/b></p><p><b>  pop ax </b></p><p>  jmp start </p><p><b>  ret </b></p><p>  edittime endp</p><p>  5)檢驗定時時間是否到CHECK子程序</

67、p><p>  CHECK PROC</p><p><b>  push ax</b></p><p><b>  push bx</b></p><p>  cmp ch,temphor ;設(shè)置定點報時</p>&

68、lt;p><b>  jne cf</b></p><p>  cmp cl,tempmin</p><p><b>  jne cf</b></p><p>  cmp dh,tempsec</p><p>  jne xiang</p><p><

69、b>  cf1 </b></p><p>  cmp cl,0 ;設(shè)置整點報時</p><p><b>  jne cf</b></p><p><b>  cmp dh,0</b></p><

70、p><b>  jne cf</b></p><p>  xiang: </p><p>  CALL OPEN ;打開揚聲器</p><p><b>  PUSH DX</b></p><p><

71、b>  PUSH CX </b></p><p>  MOV DX,12H</p><p>  MOV AX,34DEH</p><p>  mov cx,music</p><p><b>  DIV CX</b></p><p>  OUT 42H,AL</p>

72、<p><b>  MOV AL,AH</b></p><p>  OUT 42H,AL</p><p><b>  MOV AH,1</b></p><p><b>  INT 21H</b></p><p><b>  POP CX</b>

73、;</p><p><b>  POP DX</b></p><p>  CALL CLOSE ;關(guān)閉揚聲器</p><p><b>  CF: </b></p><p><b>  pop bx</b

74、></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  CHECK ENDP</p><p>  6)開啟和關(guān)閉揚聲器子程序open和close</p><p>  OPEN PROC </p>

75、<p><b>  PUSH AX</b></p><p><b>  IN AL,61H</b></p><p><b>  OR AL,03H</b></p><p>  OUT 61H,AL</p><p><b>  POP AX</b

76、></p><p><b>  RET</b></p><p>  OPEN ENDP </p><p>  CLOSE PROC</p><p><b>  PUSH AX</b></p><p>  IN AL,61H</p><p>

77、  AND AL,0FCH</p><p>  OUT 61H,AL</p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  CLOSE ENDP</p><p>  6)設(shè)置鬧鐘音樂種類子程序editmusic&l

78、t;/p><p>  Editmusic proc</p><p>  push ax ;入棧保護數(shù)據(jù) </p><p><b>  push bx </b></p><p><b>  push cx </b></p><p><b>  push dx </b

79、></p><p><b>  pushf </b></p><p>  mov dx,offset musicmess ;顯示修改音樂的種類提示 </p><p>  mov ah,09h </p><p><b>  int 21h </b></p><p>  m

80、ov dx,offset t_buff ;數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)輸入 </p><p>  mov ah,0ah </p><p><b>  int 21h </b></p><p><b>  and dx,0h</b></p><p>  lea bx,t_buff</p><p

81、><b>  inc bx</b></p><p><b>  inc bx</b></p><p><b>  inc bx</b></p><p>  mov al,[bx]</p><p>  cmp al,'1'</p><p&

82、gt;  je m800to </p><p>  cmp al,'2'</p><p>  je m1600to</p><p>  cmp al,'3'</p><p>  je m3200to</p><p>  m800to: mov music,800</p>

83、;<p><b>  jmp t</b></p><p>  m1600to: mov music,1600</p><p><b>  jmp t</b></p><p>  m3200to: mov music,3200 </p><p><

84、;b>  t:</b></p><p>  popf ;出?;謴?fù)數(shù)據(jù) </p><p><b>  pop dx </b></p><p><b>  pop cx </b></p><p><b>  pop bx </b></p><p

85、><b>  pop ax </b></p><p>  jmp start </p><p><b>  ret </b></p><p>  Editmusic endp</p><p>  五、測試數(shù)據(jù)及其結(jié)果分析</p><p><b>  1)運行畫

86、面</b></p><p><b>  2)測試結(jié)果</b></p><p><b>  A)鍵入c或C </b></p><p>  會出現(xiàn)提示“Please input the new time (hh:mm:ss):”</p><p>  再輸入19:08:40。</p>

87、;<p>  回車結(jié)束后,在19:08:40時,鬧鐘會鳴叫。</p><p><b>  B)鍵入m或M</b></p><p>  會出現(xiàn)提示“Please choose the type of music:1(fast) 2(middle) 3(slow):”</p><p>  回車后會設(shè)定此時的鬧鈴鳴叫的頻率</p&

88、gt;<p>  六、調(diào)試過程中的問題</p><p>  本次程序設(shè)計中遇到了很多的問題,在設(shè)計每一個模塊都有遇到了一定的難度。</p><p>  首先關(guān)于,如何獲得系統(tǒng)當(dāng)前的時間,查閱了INT 21H,21H的2ch可以返回的的CH,CL,DH中分別為時,分,秒但是都是二進制的,故需要的進行二進制的碼制,寫代碼時發(fā)現(xiàn)通過寄存器移位的可以十分的節(jié)省寄存器的使用數(shù)目。

89、 </p><p>  其次在寫edittime的子程序是發(fā)生了一個錯誤,很久才改正。我在使用21H的0AH向t_buffer內(nèi)存空間輸入字符串是,第一個位置是初始化時設(shè)定的t_buffer的最大長度,第二個位置是實際輸入的長度,我于是inc bx兩次(BX發(fā)的t_buffer的地址),以為能夠得到我的輸入的第一個字符,但是結(jié)果是錯誤的,查了了很久才發(fā)現(xiàn),其實我在調(diào)用該子程序前的一個控制已經(jīng)輸入了一個字

90、符,該字符已經(jīng)存入了t_buffer,故此處應(yīng)該在inc bx。在editmusic的子程序中同樣會遇到類似問題。</p><p>  在編寫程序中由于經(jīng)常的要使用寄存器,有時沒有將其壓棧保存,導(dǎo)致寄存器的值發(fā)生了不可知的變化。所以一定要注意壓棧的使用</p><p>  在實驗中使用masm開發(fā)環(huán)境,因為開始發(fā)現(xiàn)未來匯編的jne等功能的轉(zhuǎn)移范圍有限制,但是在masm中轉(zhuǎn)移的范圍很大。&l

91、t;/p><p>  本程序并沒有對一些異常輸入和其他的異常進行處理,所以在程序的健壯性上有所欠缺。后來一直在看關(guān)于繪制鐘表的相關(guān)代碼,看懂了一半,但是還是沒能完成,希望以后有機會能夠完成</p><p>  七、專業(yè)課程設(shè)計總結(jié)</p><p>  通過本次的課程設(shè)計,對匯編語言和微型計算機接口計數(shù),有了更加深刻認(rèn)識,復(fù)習(xí)了關(guān)于8254和8255的相關(guān)知識。自己設(shè)計了

92、程序的全部的流程,對每個環(huán)節(jié)都要十分清楚。代碼完成后深切的感覺到,編寫代碼前的設(shè)計十分的重要。因為,如果等到完成了許多功能后,再需要增添一個功能,或改寫一個光標(biāo)的位置,匯編語言的改寫比java等高級語言麻煩的多,十分不好改,畢竟匯編是一種低級語言,沒有面向?qū)ο蟮母拍?,很有可能大部分帶都重寫,?dǎo)致效率十分低。在程序的調(diào)試過程中熟悉了通過觀察各個寄存器內(nèi)值的變化來跟蹤程序的運行是否有誤。</p><p>  在編寫程

93、序的時候發(fā)現(xiàn)許多的技巧比如要學(xué)會多利用左移或右移的操作,這樣會十分的節(jié)省寄存器的使用。另外當(dāng)你的寄存器不夠時,可以先把幾個寄存器壓棧,進行操作后在彈出棧,這樣可以解決寄存器不夠,或某些寄存器的值不知覺的被改變。</p><p>  總之這次的匯編實驗比JAVA那部分要難一點,還好最后把基本功能完成了,能夠?qū)崿F(xiàn)一個電子鬧鐘的定時,整點鳴叫,設(shè)定鬧鐘鈴聲的種類。自己第一次編寫這么多的匯編的代碼。唯一有點遺憾的地方是,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論