Advertisement
LincolnArantes

Menu simples

Oct 17th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Escrito por Lincoln Cesar dos Reis Arantes
  2.  
  3. SYS_EXIT  equ 1
  4. RET_EXIT  equ 5
  5. SYS_READ  equ 3
  6. SYS_WRITE equ 4
  7. STD_IN    equ 0
  8. STD_OUT   equ 1
  9. MAX_IN    equ 40 ;default 10 - maximo de digitos no campo
  10.  
  11. segment .data
  12.  
  13. ;------menu display
  14.  
  15.  
  16.  
  17.  msgsel db "SELECIONE UMA OPÇÃO:", 0xA, 0xD
  18.   lensel equ $- msgsel
  19.  
  20.  
  21.  
  22.  msgc1 db "[1]OPÇÃO 1", 0xA
  23.   lenc1 equ $- msgc1
  24.  
  25.  
  26.   msgc2 db "[2]OPÇAO 2", 0xA
  27.   lenc2 equ $- msgc2
  28.  
  29.  
  30.  msgc3 db "[3]OPÇÃO 3", 0xA
  31.   lenc3 equ $- msgc3
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. ;-----fim menu display
  39.  
  40.  
  41.   msgc11 db "ENTRE COM UM NUMERO DE 1 A 3:", 0xA, 0xD
  42.   lenc11 equ $- msgc11
  43.  
  44.  
  45.  ;------------saidas das opçoes
  46.  
  47.   msgcerto db "opcao certa 1", 0xA, 0xD
  48.   lencerto equ $- msgcerto
  49.  
  50.  
  51.      msgcerto2 db "opcao certa 2", 0xA, 0xD
  52.   lencerto2 equ $- msgcerto2
  53.  
  54.  
  55.      msgcerto3 db "opcao certa 3", 0xA, 0xD
  56.   lencerto3 equ $- msgcerto3
  57.  
  58.  
  59. segment .bss
  60.  
  61.  
  62.   valor resb 2
  63.  
  64.  
  65. segment .text
  66.  
  67. global _start
  68.  
  69. _start:
  70.  
  71. ;-------mensagem do menu
  72.  
  73.  
  74. ; display de menu
  75.  
  76. ;------mensagem SELECIONE
  77.  
  78.   mov eax, SYS_WRITE
  79.   mov ebx, STD_OUT
  80.   mov ecx, msgsel
  81.   mov edx, lensel
  82.   int 0x80
  83.  
  84.  
  85.  
  86.  
  87. ;------mensagem 1
  88.  
  89.   mov eax, SYS_WRITE
  90.   mov ebx, STD_OUT
  91.   mov ecx, msgc1
  92.   mov edx, lenc1
  93.   int 0x80
  94.  
  95. ;------mensagem 2
  96.   mov eax, SYS_WRITE
  97.   mov ebx, STD_OUT
  98.   mov ecx, msgc2
  99.   mov edx, lenc2
  100.   int 0x80
  101.  
  102. ;------mensagem 3
  103.   mov eax, SYS_WRITE
  104.   mov ebx, STD_OUT
  105.   mov ecx, msgc3
  106.   mov edx, lenc3
  107.   int 0x80
  108.  
  109.  ; ----- fim display de menu
  110.  
  111.  
  112.  
  113.  
  114.  
  115. ;-------------------------
  116.  
  117.  ; display de MENU
  118.  
  119.  ; ax bx cx dx -> e
  120.   mov eax, SYS_WRITE
  121.   mov ebx, STD_OUT
  122.   mov ecx, msgc11
  123.   mov edx, lenc11
  124.   int 0x80
  125.  
  126. ;------------------
  127. ;imput
  128.  
  129.   ; Entrada Dados
  130.   mov eax, SYS_READ
  131.   mov ebx, STD_IN
  132.   mov ecx, valor
  133.   mov edx, MAX_IN
  134.   int 0x80
  135.  
  136.  
  137. ;-------------------
  138.  
  139. ; comparando valores que deu certo
  140.  
  141.  
  142. mov ah, [valor]
  143. sub ah, '0'
  144.  
  145. cmp ah, 1; compara os dois registradores
  146. je se_igual1 ; se for igual chama o se_igual abaixo(chamada)
  147.  
  148. ;---------------------------------------------------
  149. cmp ah, 2; compara os dois registradores
  150. je se_igual2 ; se for igual chama o se_igual abaixo(chamada)
  151.  
  152. ;---------------------------------------------------
  153. cmp ah, 3; compara os dois registradores
  154. je se_igual3 ; se for igual chama o se_igual abaixo(chamada)
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161. se_igual1:
  162.  
  163. ;mostra mensagem opcao 1
  164.  
  165.   mov eax, SYS_WRITE
  166.   mov ebx, STD_OUT
  167.   mov ecx, msgcerto
  168.   mov edx, lencerto
  169.   int 0x80
  170.   jmp exit
  171.  
  172. se_igual2:
  173.  
  174. ;mostra mensagem opcao 2
  175.  
  176.   mov eax, SYS_WRITE
  177.   mov ebx, STD_OUT
  178.   mov ecx, msgcerto2
  179.   mov edx, lencerto2
  180.   int 0x80
  181.   jmp exit
  182.  
  183. se_igual3:
  184.  
  185. ;mostra mensagem opcao 3
  186.  
  187.   mov eax, SYS_WRITE
  188.   mov ebx, STD_OUT
  189.   mov ecx, msgcerto3
  190.   mov edx, lencerto3
  191.   int 0x80
  192.   jmp exit
  193.  
  194.  
  195.  
  196. ; abaixo dados para a saida
  197.  
  198. exit:  
  199. mov eax,1
  200. mov ebx, 0
  201. int 0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement