找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2379|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

微機(jī)原理里面的練習(xí)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:209160 發(fā)表于 2017-6-8 12:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. DIS  MACRO  LOCAT,CODE   ;設(shè)置圖形顯示宏定義
  2.       PUSH  DX
  3.       PUSH  BX
  4.       PUSH  AX
  5.       MOV  DX,LOCAT        ;設(shè)置光標(biāo)位置
  6.       MOV  BH,00
  7.       MOV  AH,02H
  8.       INT  10H
  9.       MOV  DL,CODE         ;輸出字符串
  10.       MOV  AH,02H
  11.       INT  21H
  12.       POP  AX
  13.       POP  BX
  14.       POP  DX
  15.        ENDM

  16. DAT  SEGMENT          ;設(shè)置數(shù)據(jù)段
  17. BUF  DB  'INPUT  START  RESET  END  CONTINUE

  18.     ;設(shè)置功能說明
  19. BUFFER  DB  10 DUP(?)            ;定義緩存區(qū)
  20. TIP  DB 'M E M O R Y

  21.               ;定義記憶提示
  22. NUM  DB  1                     
  23. LOD  EQU  0929H
  24. DAT  ENDS
  25. COD  SEGMENT                 ;定義代碼段
  26. START  PROC  FAR
  27. ASSUME  CS:COD,DS:DAT      
  28. MOV  AX,DAT
  29. MOV  DS,AX
  30. MOV  DX,OFFSET  BUF          ;輸出功能說明
  31. MOV  AH,09H
  32. INT  21H
  33. CALL  DISMER                  ;記憶區(qū)提示符置光標(biāo)
  34. MOV  DX,OFFSET  TIP           ;輸出記憶提示字符
  35. MOV  AH,09H
  36. INT  21H
  37. CALL  CLR             ;圖形區(qū)清屏并設(shè)置顏色
  38. CALL  CLRDAT          ;秒表數(shù)字區(qū)清屏并設(shè)置顏色
  39. CALL  CLRMER          ; 記憶區(qū)清屏并設(shè)置顏色
  40. DIS  0419H,'<'            ;通過宏調(diào)用顯示圖形
  41. DIS  0517H,'<'
  42. DIS  0715H,'<'
  43. DIS  0914H,'<'
  44. DIS  0B14H,'<'
  45. DIS  060EH,'_'
  46. DIS  0710H,'_'
  47. DIS  0812H,'_'
  48. DIS  0913H,'_'
  49. DIS  0A14H,'_'
  50. DIS  0915H,'_'
  51. DIS  0816H,'_'
  52. DIS  0718H,'_'
  53. DIS  061AH,'_'
  54. DIS  071CH,'*'
  55. DIS  081EH,'*'
  56. DIS  091FH,'*'
  57. DIS  0B20H,'*'
  58. DIS  0D21H,'*'
  59. DIS  0F21H,'*'
  60. DIS  1120H,'*'
  61. DIS  131FH,'*'
  62. DIS  141EH,'*'
  63. DIS  151DH,'*'
  64. DIS  161BH,'*'
  65. DIS  1719H,'*'
  66. DIS  1717H,'_'
  67. DIS  1616H,'_'
  68. DIS  1514H,'_'
  69. DIS  1612H,'_'
  70. DIS  1711H,'_'
  71. DIS  170EH,'*'
  72. DIS  160CH,'*'
  73. DIS  150BH,'*'
  74. DIS  140AH,'*'   
  75. DIS  1309H,'*'
  76. DIS  1108H,'*'
  77. DIS  0F07H,'*'
  78. DIS  0D07H,'*'
  79. DIS  0B08H,'*'
  80. DIS  0909H,'*'
  81. DIS  080AH,'*'
  82. DIS  070CH,'*'
  83. DIS  0C12H,'_'
  84. DIS  0C13H,'_'
  85. DIS  0C14H,'_'
  86. DIS  0C15H,'_'
  87. DIS  0C16H,'_'
  88. CALL  GO                        ;設(shè)置初植
  89. LOAD:  CALL  IOSET                 ;光標(biāo)定位
  90. CALL  HALT                         ;等待輸入
  91. MOV  DX,0
  92. MOV  CH,0
  93. AGAIN:                                 
  94. CALL  TIME                          ;調(diào)用延時程序
  95. MOV  AL,DL                           ;百分之一秒加一
  96. ADD  AL,1
  97. DAA
  98. JC  NEXT1                              ;滿一百進(jìn)位
  99. MOV   DL,AL
  100. JMP  DISPY                             ;不滿一百顯示
  101. NEXT1:  MOV  DL,0
  102. MOV  AL,DH                           ;秒位加一
  103. ADD  AL,1
  104. DAA
  105. MOV  DH,AL
  106. CMP  AL,60H                             
  107. JNE  DISPY
  108. CALL  BELL                              ;滿60提示鈴聲并進(jìn)位
  109. MOV  DH,0
  110. MOV  AL,CH                               ;分位加一
  111. ADD  AL,1
  112. DAA
  113. MOV  CH,AL
  114. CMP  AL,60H
  115. JNE  DISPY                                      ;滿60清零
  116. MOV  CH,0
  117. DISPY:                          ;顯示電子秒表
  118. MOV  BX,OFFSET  BUFFER        ;取緩沖區(qū)地址     
  119. MOV  AL,CH
  120. CALL  TRAN                       ;將分位轉(zhuǎn)變?yōu)锳SCII碼并送緩沖區(qū)
  121. INC  BX
  122. INC  BX
  123. MOV  AL,DH                      ;將秒位轉(zhuǎn)變?yōu)锳SCII碼并送緩沖區(qū)
  124. CALL  TRAN
  125. INC  BX
  126. INC  BX
  127. MOV  AL,DL                      ;將百分之一秒位轉(zhuǎn)變?yōu)锳SCII碼并送緩沖區(qū)
  128. CALL  TRAN
  129. PUSH  BX
  130. PUSH  CX
  131. PUSH  DX
  132. CALL  IOSET                     ;光標(biāo)置位
  133. MOV  DX,OFFSET  BUFFER       ;輸出緩沖區(qū)字符串
  134. MOV  AH,09H
  135. INT  21H
  136. POP  DX
  137. POP  CX
  138. POP  BX
  139. MOV  AH,0BH                     ;等待鍵盤輸入
  140. INT  21H
  141. AND  AL,AL
  142. JZ  AGAIN
  143. MOV  AH,08H
  144. INT  21H
  145. CMP  AL,'R'                        ;判斷輸入是否為R
  146. JNE  NEXT2                        ;不是則判斷是否為E
  147. CALL  MEMORY                    ;若是則調(diào)用記憶功能保存當(dāng)前值
  148. MOV  CH,0                          ;初值清零重新計數(shù)
  149. MOV  DL,0
  150. MOV  DH,0
  151. JMP  AGAIN
  152. NEXT2:
  153. CMP  AL,'E'                        ;判斷是否為E
  154. JNE  AGAIN                        ;不是則繼續(xù)計數(shù)
  155. NEXT3:                            ;若是則暫停計數(shù)
  156. MOV  AH,08H
  157. INT  21H
  158. CMP  AL,'C'                         ;判斷是否輸入C
  159. JE  AGAIN                          ;若是則繼續(xù)計數(shù)
  160. CMP  AL,'R'                         ;判斷是否輸入R
  161. JNE  NEXT3                         ;若不是則繼續(xù)等待輸入
  162. CALL MEMORY                      ;若是則調(diào)用記憶功能
  163. CALL  GO                           ;重新設(shè)置初值等待重新啟動
  164. CALL  IOSET
  165. MOV  DX,OFFSET  BUFFER
  166. MOV  AH,09H
  167. INT  21H
  168. JMP  LOAD
  169. RET
  170. START  ENDP
  171. GO  PROC                    ;設(shè)置初值子程序
  172. MOV  BX,OFFSET  BUFFER
  173. MOV  AL,'0'
  174. MOV  [BX],AL
  175. INC  BX
  176. MOV  AL,'0'
  177. MOV  [BX],AL
  178. INC  BX
  179. MOV  AL,':'
  180. MOV  [BX],AL
  181. INC  BX
  182. MOV  AL,'0'
  183. MOV  [BX],AL
  184. INC  BX
  185. MOV  AL,'0'
  186. MOV  [BX],AL
  187. INC  BX
  188. MOV  AL,':'
  189. MOV  [BX],AL
  190. INC  BX
  191. MOV  AL,'0'
  192. MOV  [BX],AL
  193. INC  BX
  194. MOV  AL,'0'
  195. MOV  [BX],AL
  196. INC  BX
  197. MOV  AL,'


  198. MOV  [BX],AL
  199. RET
  200. GO  ENDP
  201. IOSET  PROC
  202. MOV  DX,0F10H
  203. MOV  BH,00
  204. MOV  AH,02H
  205. INT  10H
  206. RET
  207. IOSET   ENDP
  208. HALT  PROC
  209. MOV  AH,08H
  210. INT  21H
  211. CMP  AL,'S'
  212. JNE  HALT
  213. RET
  214. HALT  ENDP
  215. TRAN  PROC                       ;十六進(jìn)制轉(zhuǎn)ASCII碼子程序
  216. MOV  CL,AL
  217. SHR  AL,1
  218. SHR  AL,1
  219. SHR  AL,1
  220. SHR  AL,1
  221. OR  AL,30H
  222. MOV  [BX],AL
  223. INC  BX
  224. MOV  AL,CL
  225. AND  AL,0FH
  226. OR  AL,30H
  227. MOV  [BX],AL
  228. RET
  229. TRAN  ENDP
  230. TIME  PROC                    ;延時子程序
  231. PUSH  CX
  232. PUSH  AX
  233. MOV  AX,0EFH
  234. MOV  CX,0FFFFH
  235. A1:
  236. DEC  AX
  237. JNZ  A2
  238. JMP  A3
  239. A2:
  240. DEC  CX
  241. JNZ  A2
  242. JMP  A1
  243. A3:
  244. POP  AX
  245. POP  CX
  246. RET
  247. TIME  ENDP
  248. MEMORY   PROC                     ;記憶功能子程序
  249. PUSH  DX
  250. PUSH  BX
  251. PUSH  AX
  252. CMP  NUM,10
  253. JE  X2
  254. ADD  NUM,1
  255. X1:
  256. MOV  DX,LOD
  257. ADD  DH,NUM
  258. MOV  BH,00
  259. MOV  AH,02H
  260. INT  10H
  261. MOV  DX,OFFSET  BUFFER
  262. MOV  AH,09H
  263. INT  21H
  264. POP  AX
  265. POP  BX
  266. POP  DX
  267. RET
  268. X2: CALL  CLRMER
  269. MOV  NUM,1
  270. JMP  X1
  271. MEMORY  ENDP
  272. CLR  PROC                        ;圖形區(qū)清屏并設(shè)置顏色子程序
  273. MOV  AH,06H
  274. MOV  AL,14H
  275. MOV  CX,0401H
  276. MOV  DX,1721H
  277. MOV  BH,0CH
  278. INT  10H
  279. RET
  280. CLR  ENDP
  281. CLRDAT  PROC                      ;數(shù)據(jù)區(qū)清屏并設(shè)置顏色子程序
  282. MOV  AH,6
  283. MOV  AL,1
  284. MOV  CX,0F10H
  285. MOV  DX,0F18H
  286. MOV  BH,0BH
  287. INT 10H
  288. RET
  289. CLRDAT  ENDP
  290. CLRMER  PROC                         ;記憶區(qū)清屏并設(shè)置顏色子程序
  291. PUSH  AX
  292. PUSH  BX
  293. PUSH  CX
  294. PUSH  DX
  295. MOV  AH,6
  296. MOV  AL,11
  297. MOV  CX,0929H
  298. MOV  DX,0F32H
  299. MOV  BH,0DH
  300. INT  10H
  301. POP  DX
  302. POP  CX
  303. POP  BX
  304. POP  AX
  305. RET
  306. CLRMER  ENDP
  307. DISMER   PROC                         ;記憶提示顯示子程序
  308. MOV  AH,02H
  309. MOV  BH,00
  310. MOV  DX,0728H
  311. INT 10H
  312. RET
  313. DISMER  ENDP
  314. BELL  PROC                            ;滿分鐘提示音設(shè)置子程序
  315. PUSH  AX
  316. PUSH  DX
  317. MOV  AL,07H
  318. MOV  DL,AL
  319. MOV  AH,02H
  320. INT  21H
  321. POP  DX
  322. POP  AX
  323. RET
  324. BELL  ENDP
  325. COD  ENDS                          ;結(jié)束代碼段
  326. END  START                         ;結(jié)束源程序

復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表