• Miércoles 20 de Noviembre de 2024, 18:41

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - garpillo

Páginas: [1]
1
ASM (Ensamblador) / [Código Fuente] Calculadora
« en: Viernes 21 de Agosto de 2009, 05:57 »
[title]Calculadora[/title]

Soy estudiante de Ingenieria en sistemas y este fue uno de los primeros programas que me dejaron espero que a alguien le sirva y pueda ayudarle de algo.


La calculadora solo suma resta multiplica y divide numeros de una cifra.


Les pongo el codigo por que no pude subirlo
Código: ASM
  1. .model small
  2. .stack
  3. .data
  4.  
  5. ini db \"ESCOJA LA OPERACION QUE QUIERE REALIZAR\"1013 1013 \'$\'
  6. suma db 1013 \"[1] Suma\" \'$\'
  7. rest db 1013 \"[2] Resta\" \'$\'
  8. mult db 1013 \"[3] Multiplicacion\" \'$\'
  9. divi db 1013 \"[4] Divisiones enteras\" 1013\'$\'
  10. selec db 1013 \">>>>>>>>>    \" \'$\'
  11. error db 1013 \"Elija un numero entre 1-4 \" \'$\'
  12. valor db 1013 \"Ingrese valor 1: \" \'$\'
  13. valor2 db 1013 \"Ingrese valor 2: \" \'$\'
  14. msg db 1013 \"El resultado es: \" \'$\'
  15. sor db 1013 \"Ingrese divisor \"\'$\'
  16. dendo db 1013 \"Ingrese dividendo \" \'$\'
  17. hecho db 1013 1013 \"REALIZADO POR: GONZALO TORRES \" \'$\'
  18. sele db \'0\'
  19. cap db \'0\'
  20. cap2 db \'0\'
  21. resul db \'0\'
  22.  
  23.  
  24. .code
  25. mov ax @data
  26. mov ds ax
  27.  
  28. men:
  29. ;BORRAR PANTALLA
  30. mov ah 6        
  31. mov al 0        
  32. mov bh 07H      
  33. mov cx 0         ; Esquina superior izquierda (CH:filaCL columna)
  34. mov dx 24*256+79 ; Esquina inferior derecha (DH:filaDL:columna)
  35. int 10h          
  36.  
  37. ;PONE AL CURSOR EN UNA COORDENADA
  38. mov ah 2        
  39. mov bh 0       ; Pagina de video
  40. mov dh 4       ; Fila
  41. mov dl 0       ; Columna
  42. int 10h          
  43.  
  44.  
  45.     ;IMPRESION DEL MENU
  46. mov ah 09h
  47. mov dx offset ini
  48. int 21h
  49. mov ah 09h
  50. mov dx offset suma
  51. int 21h
  52. mov ah 09h
  53. mov dx offset rest
  54. int 21h
  55. mov ah 09h
  56. mov dx offset mult
  57. int 21h
  58. mov ah 09h
  59. mov dx offset divi
  60. int 21h
  61. mov ah 09h
  62. mov dx offset selec
  63. int 21h
  64.  
  65. mov ah 01h
  66. int 21h
  67. mov sele al
  68. sub sele 48
  69.   ;COMPROBACION SI EL NUEMRO INGRESADO ESTA EN EL MENU
  70. sub al al
  71. mov al 4
  72. mov bl sele
  73. cmp bl al   
  74. jbe inicio
  75. ja erro
  76.  
  77. erro:
  78. mov ax seg error
  79. mov ds ax
  80. mov ah 09h
  81. mov dx offset error
  82. int 21h
  83. mov ah 01h
  84. int 21h
  85. mov sele al
  86.  
  87. inicio:
  88.   ;COMPROBACION DE SI ES UNO
  89. sub al al
  90. mov bl sele
  91. mov al 1
  92. cmp bl al
  93. je sum
  94. ja sigue
  95.     ;SUMA
  96. sum: sub ax ax
  97.  
  98. ;VALOR 1
  99. mov ax seg valor
  100. mov ds ax
  101. mov ah 09h
  102. mov dx offset valor
  103. int 21h
  104. mov ah 01h
  105. int 21h
  106. mov cap al
  107. sub cap 48
  108.  
  109. ; VALOR 2
  110. mov ax seg valor2
  111. mov ds ax
  112. mov ah 09h
  113. mov dx offset valor2
  114. int 21h
  115. mov ah 01h
  116. int 21h
  117. mov cap2 al
  118. sub cap2 48
  119.  
  120. ;SUMAMOS
  121. mov bl cap
  122. add bl cap2
  123. mov resul bl
  124.  
  125. ;MENSAJE
  126. mov ax seg msg
  127. mov ds ax
  128. mov ah 09h
  129. mov dx offset msg
  130. int 21h  
  131.  
  132. ;IMPRIMIMOS RESULTADO
  133. mov ax 0
  134. mov al resul
  135. add al 48
  136. mov ah 2
  137. mov dl al
  138. int 21h
  139.  
  140. jmp fin
  141.   ;COMPROBACION DE SI ES DOS
  142. sigue:
  143. sub al al
  144. mov bl sele
  145. mov al 2
  146. cmp bl al
  147. je res
  148. ja sigue2
  149.     ;RESTA
  150.  
  151. res: sub ax ax
  152. ;VALOR 1
  153. mov ax seg valor
  154. mov ds ax
  155. mov ah 09h
  156. mov dx offset valor
  157. int 21h
  158. mov ah 01h
  159. int 21h
  160. mov cap al
  161. sub cap 48
  162.  
  163. ;VALOR 2
  164. mov ax seg valor2
  165. mov ds ax
  166. mov ah 09h
  167. mov dx offset valor2
  168. int 21h
  169. mov ah 01h
  170. int 21h
  171. mov cap2 al
  172. sub cap2 48
  173.  
  174. ;restamos
  175. mov bl cap
  176. sub bl cap2
  177. mov resul bl
  178.  
  179. ;MENSAJE
  180. mov ax seg msg
  181. mov ds ax
  182. mov ah 09h
  183. mov dx offset msg
  184. int 21h
  185.  
  186. ;IMPRIMIMOS RESULTADO
  187. mov ax 0
  188. mov al resul
  189. add al 48
  190. mov ah 2
  191. mov dl al
  192. int 21h
  193.  
  194. jmp fin
  195.  
  196.   ;COMPROBACION DE SI ES TRES
  197. sigue2:
  198. sub al al
  199. mov al 3
  200. cmp bl al
  201. je multt
  202. ja sigue3
  203.     ;MULTIPLICACION
  204. multt: sub ax ax
  205.  
  206. mov ax seg valor
  207. mov ds ax
  208. mov ah 09h
  209. mov dx offset valor
  210. int 21h
  211. mov ah 01h
  212. int 21h
  213. mov cap al
  214. sub cap 48
  215.  
  216. ; VALOR 2
  217. mov ax seg valor2
  218. mov ds ax
  219. mov ah 09h
  220. mov dx offset valor2
  221. int 21h
  222. mov ah 01h
  223. int 21h
  224. mov cap2 al
  225. sub cap2 48
  226.  
  227. ;multimplicamos
  228. mov al cap
  229. sub al 1
  230. mov cl al
  231. mov bl cap2
  232. uno: add bl cap2
  233. loop uno
  234. mov resul bl
  235.  
  236. ;MENSAJE
  237. mov ax seg msg
  238. mov ds ax
  239. mov ah 09h
  240. mov dx offset msg
  241. int 21h  
  242.  
  243. ;IMPRIMIMOS RESULTADO
  244. mov ax 0
  245. mov al resul
  246. add al 48
  247. mov ah 2
  248. mov dl al
  249. int 21h
  250.  
  251. jmp fin
  252.  
  253.   ;COMPROBACION DE SI ES CUATRO
  254. sigue3:
  255. sub al al
  256. mov al 4
  257. cmp bl al
  258. je dis
  259.  
  260.     ;DIVISION
  261. dis: sub ax ax
  262. ;VALOR 1
  263. mov ax seg dendo
  264. mov ds ax
  265. mov ah 09h
  266. mov dx offset dendo
  267. int 21h
  268. mov ah 01h
  269. int 21h
  270. mov cap al
  271. sub cap 48
  272.  
  273. ;VALOR 2
  274. mov ax seg sor
  275. mov ds ax
  276. mov ah 09h
  277. mov dx offset sor
  278. int 21h
  279. mov ah 01h
  280. int 21h
  281. mov cap2 al
  282. sub cap2 48
  283.  
  284. ;dividimos
  285. mov al cap2
  286. mov bl cap
  287. div bl
  288. mov resul ah
  289.  
  290.  
  291. ;MENSAJE
  292. mov ax seg msg
  293. mov ds ax
  294. mov ah 09h
  295. mov dx offset msg
  296. int 21h
  297.  
  298. ;IMPRIMIMOS RESULTADO
  299. mov ax 0
  300. mov al resul
  301. add al 48
  302. mov ah 2
  303. mov dl al
  304. int 21h
  305.  
  306. fin:
  307. mov ah 09h
  308. mov dx offset hecho
  309. int 21h
  310. mov ah 4ch
  311. int 21h
  312. end
  313.             
  314.  

Autor: Gonzalo Torres

Páginas: [1]