鱼C论坛

 找回密码
 立即注册
查看: 1688|回复: 0

程序有两个报错。不太懂,求思路

[复制链接]
发表于 2013-11-25 15:28:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ;数据段
  2. datarea segment
  3. mesg1 db 'Please input a number(1,2,3,4,5,,6,7,8) to select style:',13,10
  4. db '1.small letter to capital letter',13,10
  5. db '2.capital letter to small letter',13,10
  6. db '3.bin to hex',13,10
  7. db '4.hex to bin',13,10
  8. db '5.dec to bin',13,10
  9. db '6.bin to dec',13,10
  10. db '7.hex to dec',13,10
  11. db '8.dec to hex',13,10,'$'
  12. mesg2 db 'You have input a invalid number!Please select again:',13,10,'$'
  13. mesg3 db 'Please input a small letter:',13,10,'$'
  14. mesg4 db 'Its capital letter is',13,10,'$'
  15. mesg5 db 'Please input a capital letter:',13,10,'$'
  16. mesg6 db 'Its small letter is',13,10,'$'
  17. mesg7 db 'Please input a bin number:',13,10,'$'
  18. mesg8 db 'Please input a dec number:',13,10,'$'
  19. mesg9 db 'please input a hex number:',13,10,'$'
  20. mesg10 db 'Its bin number is',13,10,'$'
  21. mesg11 db 'Its dec number is',13,10,'$'
  22. mesg12 db 'Its hex number is',13,10,'$'
  23. datarea ends


  24. prognam segment
  25. main proc far
  26. assume cs:prognam,ds:datarea

  27. start:
  28. push ds
  29. xor ax,ax
  30. push ax
  31. mov ax,datarea
  32. mov ds,ax
  33. again:
  34. lea dx,mesg1
  35. mov ah,09h
  36. int 21h
  37. repeat:
  38. mov ah,01h
  39. int 21h
  40. cmp al,31h
  41. je L1
  42. cmp al,32h
  43. je L2
  44. cmp al,33h
  45. je L3
  46. cmp al,34h
  47. je L4
  48. cmp al,35h
  49. je L5
  50. cmp al,36h
  51. je L6
  52. cmp al,37h
  53. je L7
  54. cmp al,38h
  55. je L8
  56. lea dx,mesg2
  57. mov ah,9
  58. int 21h
  59. jmp repeat

  60. L1:
  61. call small_capital
  62. call crlf
  63. jmp again
  64. L2:
  65. call capital_small
  66. call crlf
  67. jmp again
  68. L3:
  69. call binhex
  70. call crlf
  71. jmp again
  72. L4:
  73. call hexbin
  74. call crlf
  75. jmp again
  76. L5:
  77. call decbin
  78. call crlf
  79. jmp again
  80. L6:
  81. call bindec
  82. call crlf
  83. jmp again
  84. L7:
  85. call hexdec
  86. call crlf
  87. jmp again
  88. L8:
  89. call dechex
  90. call crlf
  91. jmp again
  92. ret
  93. main endp

  94. small_capital proc near
  95. xor ax,ax
  96. lea dx,mesg3
  97. mov ah,9
  98. int 21h
  99. mov ah,1
  100. int 21h
  101. sub al,20h
  102. push ax
  103. lea dx,mesg4
  104. mov ah,9
  105. int 21h
  106. pop ax
  107. mov dl,al
  108. mov ah,2
  109. int 21h
  110. ret
  111. small_capital endp

  112. capital_small proc near
  113. xor ax,ax
  114. lea dx,mesg5
  115. mov ah,9
  116. int 21h
  117. mov ah,1
  118. int 21h
  119. add al,20h
  120. push ax
  121. lea dx,mesg6
  122. mov ah,9
  123. int 21h
  124. pop ax
  125. mov dl,al
  126. mov ah,2
  127. int 21h
  128. ret
  129. capital_small endp

  130. binhex proc near
  131. xor ax,ax
  132. mov bx,ax
  133. lea dx,mesg7
  134. mov ah,9
  135. int 21h
  136. mov si,4
  137. newchar1:
  138. mov ah,1
  139. int 21h
  140. sub al,30h
  141. jl rotate1
  142. cmp al,10d
  143. jl add_to1
  144. jmp rotate1

  145. add_to1: ;save bin to bx
  146. mov cl,1
  147. shl bx,cl
  148. mov ah,0
  149. add bx,ax
  150. jmp newchar1
  151. rotate1:
  152. lea dx,mesg12
  153. mov ah,9
  154. int 21h

  155. rotate1_1:
  156. mov cl,4
  157. rol bx,cl
  158. mov al,bl
  159. and al,0fh
  160. add al,30h
  161. cmp al,3ah
  162. jl print1
  163. add al,7h
  164. print1:
  165. mov dl,al
  166. mov ah,2
  167. int 21h
  168. dec si
  169. jnz rotate1_1
  170. ret
  171. binhex endp

  172. hexbin proc near
  173. mov bx,0
  174. lea dx,mesg9
  175. mov ah,9
  176. int 21h
  177. mov si,16
  178. newchar2:
  179. mov ah,1
  180. int 21h
  181. sub al,30h
  182. jl print2
  183. cmp al,10d
  184. jl add_to2

  185. sub al,27h
  186. cmp al,0ah
  187. jl print2
  188. cmp al,10h
  189. jge print2
  190. add_to2:
  191. mov cl,4
  192. shl bx,cl
  193. mov ah,0
  194. add bx,ax
  195. jmp newchar2

  196. lea dx,mesg10
  197. mov ah,9
  198. int 21h
  199. print2:
  200. rol bx,1
  201. mov al,bl
  202. and al,1h
  203. add al,30h
  204. mov dl,al
  205. mov ah,2
  206. int 21h
  207. dec si
  208. jnz print2
  209. ret
  210. hexbin endp

  211. decbin proc near
  212. lea dx,mesg8
  213. mov ah,9
  214. int 21h

  215. mov bx,0
  216. newchar3:
  217. mov ah,1
  218. int 21h

  219. sub al,30h
  220. jl print3
  221. cmp al,9d
  222. jg print3
  223. cbw

  224. xchg ax,bx
  225. mov cx ,10d
  226. mul cx
  227. xchg ax,bx
  228. add bx,ax
  229. jmp newchar3
  230. print3:
  231. lea dx,mesg10
  232. mov ah,9
  233. int 21h

  234. rol bx,1
  235. mov al,bl
  236. and al,1h
  237. add al,30h
  238. mov dl,al
  239. mov ah,2
  240. int 21h
  241. dec si
  242. jnz print3
  243. ret
  244. decbin endp

  245. bindec proc near
  246. lea dx,mesg7
  247. mov ah,9
  248. int 21h
  249. newchar4:
  250. mov ah,1
  251. int 21h
  252. sub al,30h
  253. jl print4
  254. cmp al,10d
  255. jl add_to4
  256. jmp print4
  257. add_to4:
  258. mov cl,1
  259. shl bx,cl
  260. mov ah,0
  261. add bx,ax
  262. jmp newchar4
  263. print4:
  264. lea dx,mesg11
  265. mov ah,9
  266. int 21h ;display dec
  267. mov cx,10000d
  268. call dec_div4
  269. mov cx,1000
  270. call dec_div4
  271. mov cx,100
  272. call dec_div4
  273. mov cx,10
  274. call dec_div4
  275. mov cx,1
  276. call dec_div4
  277. ret

  278. dec_div4 proc near
  279. mov ax,bx
  280. mov dx,0
  281. div cx
  282. mov bx,dx
  283. mov dl,al
  284. add dl,30h
  285. mov ah,2
  286. int 21h
  287. ret
  288. dec_div4 endp
  289. bindec endp

  290. hexdec proc near
  291. lea dx,mesg9
  292. mov ah,9
  293. int 21h
  294. mov bx,0
  295. newchar5:
  296. mov ah,1
  297. int 21h
  298. sub al,30h
  299. jl next5
  300. cmp al,10d
  301. jl add_to5
  302. sub al,27h
  303. cmp al,0ah
  304. jl next5
  305. cmp al,10h
  306. jge next5
  307. add_to5:
  308. mov cl,4
  309. shl bx,cl
  310. mov ah,0
  311. add bx,ax
  312. jmp newchar5
  313. next5:
  314. lea dx,mesg11
  315. mov ah,9
  316. int 21h ;display dec
  317. mov cx,10000d
  318. call dec_div5
  319. mov cx,1000d
  320. call dec_div5
  321. mov cx,100d
  322. call dec_div5
  323. mov cx,10d
  324. call dec_div5
  325. mov cx,1d
  326. call dec_div5
  327. ret
  328. hexdec endp

  329. dec_div5 proc near
  330. mov ax,bx
  331. mov dx,0
  332. div cx
  333. mov bx,dx
  334. mov dl,al
  335. add dl,30h
  336. mov ah,2
  337. int 21h
  338. ret
  339. dec_div5 endp


  340. dechex proc near
  341. lea dx,mesg11
  342. mov ah,9
  343. int 21h
  344. mov bx,0
  345. newchar6:
  346. mov ah,1
  347. int 21h
  348. sub al,30h
  349. jl next6
  350. cmp al,9d
  351. jg next6
  352. cbw
  353. xchg ax,bx
  354. mov cx,10d
  355. mul cx
  356. xchg ax,bx
  357. add bx,ax
  358. jmp newchar6
  359. next6:
  360. mov si,4
  361. lea dx,mesg12
  362. mov ah,9
  363. int 21h
  364. rotate6:
  365. mov cl,4
  366. rol bx,cl
  367. mov al,bl
  368. and al,0fh
  369. add al,30h
  370. cmp al,3ah
  371. jl print6
  372. add al,7h
  373. print6:
  374. mov dl,al
  375. mov ah,2
  376. int 21h
  377. dec ch
  378. jnz rotate6
  379. ret
  380. dechex endp

  381. crlf proc near
  382. mov dl,13
  383. mov ah,2
  384. int 21h
  385. mov dl,10
  386. mov ah,2
  387. int 21h
  388. ret
  389. crlf endp

  390. prognam ends
  391. end start
复制代码

一个是在repeat那里。一个是在程序最后。

我检查了好久,发现没错误吧。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 10:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表