Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.             ########################## TRABALHO FINAL ##########################
  2.             ################### SIMULADOR DE SISTEMA BANCÁRIO ##################
  3.             ### DUPLA: PAULO ROBERTO NUNES DA ROSA / DOMARYS DA SILVA CORREA ###
  4.  
  5. .data
  6.     String0: .asciiz "\nInforme o tipo de usuário(1.Cliente|2.Funcionário|3.Administrador|4.Fechar Terminal):"
  7.     String1: .asciiz "###ERRO###\nOpção Informada não existe!!!"
  8.     String2: .asciiz "Você deseja fazer um:\n1.Deposito\n2.Saque\n3.Transferência\nOpção desejada:"
  9.     String3: .asciiz "Você deseja fazer um:\n1.Cadastro de Clientes\n2.Cadastro de Funcionário\nOpção desejada:"
  10.     String4: .asciiz "\nInforme o Nome:"
  11.     String5: .asciiz "\nCPF:"
  12.     String6: .asciiz "\nSenha:"
  13.     String7: .asciiz "\nSaldo Inicial:"
  14.     String8: .asciiz "\nDeseja realizar outra operação(1.Sim|2.Não)?"
  15.     String9: .asciiz "\nInforme a Senha:"
  16.     String10:.asciiz "Senha informada é incorreta!\n"
  17.     String11:.asciiz "Você deseja fazer um:\n1.Cadastro de Clientes\n2.Cadastro de Funcionário\nOpção desejada:"   
  18.     String12:.asciiz "\nInforme o número da conta:"
  19.     String13:.asciiz "\nInforme o número do funcionário:"
  20.     String14:.asciiz "\nDADOS INCORRETOS!!!\n"
  21.     String15:.asciiz "\nQuanto deseja depositar?"
  22.     String16:.asciiz "\nSeu saldo anterior era:R$"
  23.     String17:.asciiz "\nSeu saldo atual é:R$"
  24.     String18:.asciiz "\nQuanto deseja Sacar?"
  25.     String19:.asciiz "\nA quantidade que você deseja transferir é:"
  26.     String20:.asciiz "\nNúmero da conta para transferir:"
  27.     String21:.asciiz "\nO Saldo anterior da conta do beneficiário era:R$"
  28.     String22:.asciiz "\nO Saldo atual da conta do beneficiário é:R$"
  29.     String23:.asciiz "\nNão tem nenhum cadastro de Cliente!!!"
  30.     String24:.asciiz "\nNão tem nenhum cadastro de Funcionário!!!"
  31. .text
  32.    
  33.                     ### PROGRAMA PRINCIPAL ### 
  34.    
  35.     MAIN:       lui $a3,0x1001
  36.             addi $a3,$a3,0x0500
  37.             move $s6,$a3        #Coloca o endereço 0x10010500 em $s6, o espaço de memória apartir desse endereço será usado para o cadastro de Funcionários, o espaço acaba quando chegar no espaço correspondente de clientes
  38.             lui $a2,0x1001
  39.             addi $a2,$a2,0x0600
  40.             move $s5,$a2        #Coloca o endereço 0x10010600 em $s5, o espaço de memória apartir desse endereço será usado para cadastro de clientes
  41.    
  42.     INICIO:     jal LOGIN       #Chama a Função LOGIN
  43.             nop
  44.             move $t0,$v0        #o valor que retorna da função (que determina a opção escolhida) é salvo em $t0
  45.    
  46.     IFMENU:     bne $t0,1,ELSEMENU  #Verifica se a opção selecionada foi a de modo cliente se não for ele segue para ELSEMENU
  47.             nop
  48.             beq $s3,0,ERROCLIENTE
  49.             nop
  50.             move $a0,$t0        #manda o valor da seleção do menu para $a0
  51.             jal SENHA       #chama a função SENHA
  52.             nop
  53.    
  54.     MENU1:      jal MENUCLIENT      #chama a função MENUCLIENT
  55.             nop
  56.             move $a1,$v0        #o valor que retornou do menu na opção escolhida é salvo em $a1 para ser enviado para a função como parâmetro    
  57.             jal FUNCAOCLIENT    #chama a função FUNCAOCLIENT
  58.             nop
  59.             la $a0,String8      #printa a string que pergunta se tem alguma outra função que se deseja realizar
  60.             li $v0,4
  61.             syscall
  62.             li $v0,5        #lê a opção informada
  63.             syscall
  64.             beq $v0,1,MENU1     #se deseja realizar outra opção volta para MENU1 
  65.             nop
  66.             j INICIO        #se não deseja realizar outra função volta para o inicio
  67.             nop
  68.    
  69.     ELSEMENU:   bne $t0,2,ADMIN     #verifica se a opção selecionada no meno LOGIN foi 2 que é FUNCIONÁRIO
  70.             nop
  71.             beq $s4,0,ERROFUNC
  72.             nop
  73.             move $a0,$t0        #manda o valor da seleção do menu para $a0
  74.             jal SENHA       #chama a função SENHA
  75.             nop
  76.    
  77.     MENU2:      jal MENUFUNC        #chama a função MENUFUNC
  78.             nop
  79.    
  80.     JUMPADMIN:  move $a1,$v0        #o valor que retornou do menu na opção escolhida é salvo em $a1 para ser enviado para a função como parâmetro
  81.             jal FUNCAOFUNCIO    #chama a funçao FUNCAOFUNCIO que e responsavel pelas operaçoes dos funcionarios
  82.             nop
  83.             move $a2,$v0        #salva o endereço da memória onde foi feito o último cadastro de cliente, indicando onde pode começar o próximo cadastro
  84.             move $a3,$v1        #salva o endereço de memória onde foi feito o último cadastro de funcionário, indicando onde pode começar o proximo cadastro
  85.             la $a0,String8      #printa a string que pergunta se o usuário deseja realizar outra operação
  86.             li $v0,4
  87.             syscall
  88.             li $v0,5        #lê a opção escolhida
  89.             syscall
  90.             beq $v0,1,MENU2     #se deseja realizar outra operação vai para MENU2
  91.             nop
  92.             j INICIO        #se não deseja realizar outra operação volta para o INICIO
  93.             nop
  94.    
  95.     ADMIN:      bne $t0,3,FIM       #se opção informada não for 3 para admin vai para ERROR
  96.             nop
  97.    
  98.     DENOVO:     la $a0,String9      #se for admin printa a string que pede para informar a senha
  99.             li $v0,4
  100.             syscall
  101.             li $v0,5        #lê a senha
  102.             syscall
  103.             bne $v0,1111,ERROSENHAA #testa para ver se a senha é do admin(que no caso é 1111), se não for vai para ERROSENHAA
  104.             nop
  105.             la $a0,String11     #se senha estiver correta printa a string que pergunta qual cadastro se deseja fazer, cliente ou funcionário
  106.             li $v0,4
  107.             syscall
  108.             li $v0,5        #lê a opção informada pelo usuário
  109.             syscall
  110.             bne $v0,1,TESTE1    #se for cadastro não for para cliente, vai para TESTE1
  111.             nop
  112.             j JUMPADMIN     #se cadastro for de cliente vai para JUMPADMIN
  113.    
  114.     TESTE1:     bne $v0,2,ERROR     #se opção informada foi errada vai para ERROR
  115.             nop
  116.             j JUMPADMIN     #se é para fazer cadastro de funcionário vai para JUMPADMIN
  117.             nop    
  118.    
  119.     ERROR:      la $a0,String1      #printa a string que informa que a opção escolhida não existe
  120.             li $v0,4
  121.             syscall
  122.             j INICIO        #volta para o inicio do programa
  123.             nop
  124.    
  125.     ERROCLIENTE:    la $a0, String23    #coloca na tela a String0
  126.             li $v0,4
  127.             syscall
  128.             j INICIO
  129.             nop
  130.     ERROFUNC:   la $a0, String24    #coloca na tela a String0
  131.             li $v0,4
  132.             syscall
  133.             j INICIO
  134.             nop
  135.            
  136.     ERROSENHAA: la $a0,String10     #printa string que informa que foi colocada errada a senha do administrador
  137.             li $v0,4
  138.             syscall
  139.             j DENOVO        #vai para DENOVO ler novamente a senha do administrador
  140.             nop        
  141.    
  142.     FIM:        bne $t0,4,ERROR     #testa se a opção escolhida é igual a quatro, se sim encerra o programa, se não vai para ERROR
  143.             nop
  144.             li $v0,10       #encerra o programa
  145.             syscall
  146.        
  147.     ### Essa Função determina se o acesso ao sistema e feito como cliente, funcionário ou administrador ###     
  148. LOGIN:      la $a0, String0     #coloca na tela a String0
  149.         li $v0,4
  150.         syscall
  151.         li $v0,5        #lê o inteiro correspondente a opção do menu de LOGIN
  152.         syscall
  153.         jr $ra
  154.         nop
  155.        
  156.             ### Essa funçao realiza as opçoes do modo cliente ###
  157.            
  158. FUNCAOCLIENT:   move $t7,$s7            #salva o endereço de memória que corresponde ao cliente que está usando em $t7
  159.        
  160. DEPOSITO:  
  161.         bne $a1,1,SAQUE         #testa se a opção selecionada do menu foi depósito, se não for vai para saque
  162.         nop
  163.         addi $t7,$t7,36         #pula para a parte da memória que corresponde ao saldo do cliente
  164.         lw $t3,0($t7)           #coloca o saldo do cliente em $t3
  165.         la $a0,String15         #Chama a String que pergunta o quanto o cliente deseja depositar
  166.         li $v0,4
  167.         syscall
  168.         li $v0,5            #lê a quantidade do depósito
  169.         syscall
  170.         move $t4,$v0            #salva a quantidade do depósito em $t4
  171.         la $a0,String16         #chama a string para informar o saldo anterior
  172.         li $v0,4   
  173.         syscall
  174.         move $a0,$t3            #printa o saldo anterior
  175.         li $v0,1
  176.         syscall
  177.         add $t3,$t4,$t3         #Soma o valor novo na conta do cliente
  178.         la $a0,String17         #mostra a string que determina o valor atual do saldo do cliente
  179.         li $v0,4
  180.         syscall
  181.         move $a0,$t3            #passa o saldo atual para $a0
  182.         li $v0,1            #printa o saldo atual
  183.         syscall
  184.         sw $t3,0($t7)           #salva o saldo atual na memória
  185.         j RETORNAF          #retorna para o programa principal
  186.         nop
  187.  
  188. SAQUE:      bne $a1,2,TRANSF        #testa se a opção selecionada do menu foi para saque, se não for vai para transferência
  189.         nop    
  190.         addi $t7,$t7,36         #pula para a parte da memória que corresponde ao saldo do cliente
  191.         lw $t3,0($t7)           #carrega o saldo do cliente
  192.         la $a0,String18         #printa  a string que pergunta o quanto o cliente quer sacar
  193.         li $v0,4
  194.         syscall
  195.         li $v0,5            #lê a quantidade que o cliente quer sacar
  196.         syscall
  197.         move $t4,$v0            #coloca o valor do saque em $t4
  198.         la $a0,String16         #printa a string que vai mostrar o saldo anterior
  199.         li $v0,4
  200.         syscall
  201.         move $a0,$t3            #salva o saldo anterior em $a0
  202.         li $v0,1            #printa o saldo anterior
  203.         syscall
  204.         sub $t3,$t3,$t4         #diminui o valor do saque do saldo atual
  205.         la $a0,String17         #printa a string que vai mostrar o saldo atual
  206.         li $v0,4
  207.         syscall
  208.         move $a0,$t3            #salva o saldo atual em $a0
  209.         li $v0,1            #printa o saldo atual após o saque
  210.         syscall
  211.         sw $t3,0($t7)           #salva o valor do saldo atual na memória
  212.         j RETORNAF
  213.         nop
  214.  
  215. TRANSF:     bne $a1,3,ERROR2        #verifica se o valor lido do menu é diferente das opções corretas, se for vai para ERROR2
  216.         nop
  217.         la $a0,String19         #printa a string que pergunta a quantidade que o cliente deseja transferir
  218.         li $v0,4
  219.         syscall
  220.         li $v0,5            #lê o valor da transferência
  221.         syscall
  222.         move $t4,$v0            #salva o valor da transferência em $t4
  223.         addi $t7,$t7,36         #pula para a parte da memória que corresponde ao saldo do cliente
  224.         lw $t3,0($t7)           #carrega o saldo do cliente
  225.         sub $t2,$t3,$t4         #subtrai o valor da transferência do saldo do cliente
  226.         sw $t2,0($t7)           #salva na memória o saldo atualizado do cliente
  227.  
  228.  
  229. VOLTATRANSF:    la $a0,String20         #printa a string que pede o número da conta para transferir
  230.         li $v0,4       
  231.         syscall
  232.         li $v0,5            #lê o número da conta para transferir
  233.         syscall
  234.         move $t5,$v0            #salva o número da conta em $t5
  235.         move $t6,$s5            #salva o primeiro endereço de memória que corresponde aos clientes em $t6
  236.        
  237. BUSCATRANSF:    lw $t1,0($t6)           #carrega o primeiro endereço que corresponde ao espaço de memória reservado para número de conta de clientes
  238.         bne $t1,$t5,PROXIMATRANSF   #Verifica se o numero da conta do cliente corresponde com o informado se não vai para PROXIMATRANSF
  239.         nop
  240.         addi $t6,$t6,36         #vai para o campo que corresponde ao saldo que se deseja realizar a transferÊncia
  241.         lw $t1,0($t6)           #carrega o valor do saldo em $t1
  242.         la $a0,String16         #printa a string que mostra o saldo anterior do cliente
  243.         li $v0,4
  244.         syscall
  245.         move $a0,$t3            #coloca o saldo anterior do cliente em $a0
  246.         li $v0,1            #printa o saldo anterior do cliente
  247.         syscall
  248.         la $a0,String21         #printa a string que mostra o saldo anterior do beneficiário
  249.         li $v0,4
  250.         syscall
  251.         move $a0,$t1            #printa o saldo anterior do beneficiário
  252.         li $v0,1
  253.         syscall
  254.         la $a0,String17         #printa a string que mostra o saldo atual do cliente
  255.         li $v0,4
  256.         syscall
  257.         move $a0,$t2            #coloca o saldo atual em $a0
  258.         li $v0,1            #printa o saldo atual
  259.         syscall
  260.         add $t1,$t1,$t4         #soma o valor da transferência ao saldo atual do beneficiário
  261.         sw $t1,0($t6)           #coloca na memória o saldo atualizado do beneficiário
  262.         la $a0,String22         #printa a string que mostra o saldo atual do beneficiário
  263.         li $v0,4
  264.         syscall
  265.         move $a0,$t1            #salva o saldo atual do beneficiário em $a0
  266.         li $v0,1            #printa o saldo do beneficiário atualizado
  267.         syscall
  268.         j RETORNAF          #vai para RETORNAF
  269.         nop
  270.  
  271. PROXIMATRANSF:  beq $t1,$zero,CONTAINVTRANSF    #testa para ver se o número de conta informada e nulo se for vai para CONTAINVTRANSF
  272.         nop
  273.         addi $t6,$t6,40         #vai para a próxima conta que está na memória
  274.         j BUSCATRANSF           #vai para BUSCATRANSF
  275.         nop
  276.  
  277. CONTAINVTRANSF: la $a0,String14         #printa a string informando que os dados informados sao invalidos
  278.         li $v0,4
  279.         syscall
  280.         j VOLTATRANSF           #vai para VOLTATRANSF ler o dado da conta para transferência novamente
  281.         nop    
  282.  
  283. ERROR2:     la $a0, String1         #printa a string que informa que o valor de opção do menu que foi informado é incorreto
  284.         li $v0,4   
  285.         syscall
  286.  
  287. RETORNAF:   jr $ra              #volta para o programa principal
  288.         nop
  289.  
  290.     ### Essa funçao mostra as opçoes do menu para cliente, ela le a opçao escolhida e retorna o valor lido ###
  291.  
  292. MENUCLIENT: la $a0, String2         #printa a string que mostra as opçoes que o cliente tem
  293.         li $v0,4
  294.         syscall
  295.         li $v0,5            #lê a opção selecionada
  296.         syscall
  297.         jr $ra              #retorna para o programa principal
  298.         nop
  299.  
  300. ### Essa função verifica se o modo selecionado corresponde a cliente ou funcionário, e lê a senha e o número de conta ou número do funcionário e busca na memória para ver se existem os valores informados ###
  301.                        
  302. SENHA:      move $s7,$a0            #passa o valor da opção lida no menu para $s7
  303.         bne $s7,1,SENHAFUNC     #se a opçao escolhida for funcionario ele vai para SENHAFUNC
  304.         nop
  305.  
  306. VOLTA:      move $t5,$s5            #pega o primeiro endereço da área de memória reservada para clientes e coloca em $t5
  307.         move $s7,$t5            #coloca uma copia do endereço em $s7 para ser usado na função cliente
  308.         la $a0, String9         #printa a string que pede para informar a senha
  309.         li $v0,4
  310.         syscall
  311.         li $v0,5            #lê a senha
  312.         syscall
  313.         move $t1,$v0            #coloca a senha lida em $t1
  314.         la $a0, String12        #printa a string que pede para informar o numero de conta do cliente
  315.         li $v0,4           
  316.         syscall
  317.         li $v0,5            #lê o número da conta
  318.         syscall
  319.         move $t2,$v0            #salva o número da conta em $t2
  320.  
  321. BUSCACLIENTE:   move $t7,$t5            #salva o endereço que está em $t5 no registrador $t7
  322.         lw $t3,0($t7)           #carrega o dado da memória que corresponde ao número da conta
  323.         bne $t3,$t2,PROXIMA     #verifica se o número da conta lida é o mesmo desse endereço, se não for vai para a próxima conta na memória
  324.         nop
  325.         addi $t7,$t7,32         #se o número de conta estiver corredo, é somado no endereço 32 bytes para ele pular para o campo que corresponde a senha
  326.         lw $t3,0($t7)           #carrega a senha e salva em $t3        
  327.         beq $t3,$t1,RETORNA     #verifica se a senha informada é a correta, se for vai para RETORNA
  328.         nop
  329.         j CONTAINV          #se senha informada estiver incorreta vai para  CONTAINV
  330.         nop
  331.  
  332. PROXIMA:    beq $t3,$zero,CONTAINV      #verifica se o número de conta é válido, se não for vai para CONTAINV
  333.         nop
  334.         addi $t5,$t5,40         #se a valor é válido vai para a próxima conta para ver se encontra o número de conta correto
  335.         j BUSCACLIENTE          #volta para BUSCACLIENTE
  336.         nop
  337.  
  338. CONTAINV:   la $a0,String14         #printa a String que avisa que os dados informados estao errados
  339.         li $v0,4
  340.         syscall
  341.         j VOLTA             #vai para VOLTA que pede os dados novamente
  342.         nop
  343.  
  344. SENHAFUNC:  move $t6,$s6            #pega o primeiro endereço da área de memória reservada para funcionários e coloca em $t6
  345.         la $a0, String9         #prnta string que pede senha
  346.         li $v0,4
  347.         syscall
  348.         li $v0,5            #lê a senha
  349.         syscall
  350.         move $t1,$v0            #salva a senha em $t1
  351.         la $a0, String13        #printa a string que pede o número do funcionário
  352.         li $v0,4           
  353.         syscall
  354.         li $v0,5            #lê o número do funcionário
  355.         syscall
  356.         move $t2,$v0            #salva o número do funcionário em $t2
  357. BUSCAFUNC:  move $t7,$t6            #coloca o endereço de $t6 em $t7
  358.         lw $t3,0($t7)           #carrega o campo número de funcionário da memória
  359.         bne $t3,$t2,PROXIMA2        #se o número informado não existe nessa posição de memória ele vai para PROXIMA2
  360.         nop    
  361.         addi $t7,$t7,32         #se número existe, é somado 32bytes em $t7 para ir para o campo da senha do funcionário
  362.         lw $t3,0($t7)           #carrega a senha do funcionário em $t3
  363.         beq $t3,$t1,RETORNA     #testa para ver se a senha lida está correta, se estiver vai para RETORNA
  364.         nop
  365.         j CONTAINV2         #se senha for incorreta vai para CONTAINV2
  366.         nop
  367. PROXIMA2:   beq $t3,$zero,CONTAINV2     #vê se número de funcionário é válido, se não for vai para CONTAINV2
  368.         nop
  369.         addi $t6,$t6,36         #número sendo válido vai para o próximo número até encontrar o correto, ou se caso não existir encontrar um inválido e ler tudo novamente
  370.         j BUSCAFUNC         #vai para BUSCAFUNC
  371.         nop
  372. CONTAINV2:  la $a0,String14         #printa a string informando que os dados estão incorretos
  373.         li $v0,4
  374.         syscall
  375.         j SENHAFUNC         #vai para SENHAFUNC ler os dados novamente
  376.         nop        
  377. RETORNA:    jr $ra              #volta para o programa principal
  378.         nop
  379.  
  380.         ### Essa função mostra as opções de menu do funcionário, e lê a opção que o cliente escolheu ###       
  381.                        
  382. MENUFUNC:   la $a0, String3         #printa a string que mostra as opçoes do funcionario
  383.         li $v0,4
  384.         syscall
  385.         li $v0,5            #lê a opção escolhida
  386.         syscall
  387.         jr $ra              #volta para o programa principal
  388.         nop
  389.        
  390.     ### Essa função realiza as operações possíveis para funcionários, que é cadastro de funcionário e de cliente ###
  391.                
  392. FUNCAOFUNCIO:   bne $a1,1,CADASTROFUNC      #Primeiro Cadastro é para Clientes se for 1
  393.         nop
  394.         addi $s3,$s3,1
  395.         addi $s1,$s1,1          #Contador para número de contas de clientes           
  396.         sw $s1,0($a2)           #coloca na primeira posição da memória correspondente ao cadastro do cliente o número da conta
  397.         addi $a2,$a2,4          #soma 4 no endereço e vai para a próxima posição que corresponde ao armazenamento do nome do cliente
  398.         #Informe o Nome:
  399.         la $a0, String4         #printa a string que pede para informar o nome
  400.         li $v0,4
  401.         syscall
  402.         move $a0,$a2            #salva o endereço onde será armazenado o nome em $a0
  403.         li $a1,15           #número máximo de char por nome é 15
  404.         li $v0,8            #lê string de nome do cliente
  405.         syscall
  406.         addi $a2,$a2,16         #soma no endereço 16 para ir para o próximo campo de memória que é do cpf
  407.         #CPF:
  408.         la $a0, String5 #CPF        #printa a string que pede para informar o CPF
  409.         li $v0,4
  410.         syscall
  411.         move $a0,$a2            #coloca endereço onde a string do cpf sera salva
  412.         li $a1,12           #determina o tamanho da string
  413.         li $v0,8            #le string do cpf
  414.         syscall
  415.         addi $a2,$a2,12         #vai para a proxima posiçao de memoria correspondente a senha
  416.         #Senha:
  417.         la $a0, String6         #printa a string que pede para informar a senha
  418.         li $v0,4
  419.         syscall
  420.         li $v0,5            #le a senha
  421.         syscall
  422.         sw $v0,0($a2)           #coloca a senha no seu endereço de memoria
  423.         addi $a2,$a2,4          #vai para a proxima posiçao de memoria que corresponde ao saldo inicial
  424.         #Saldo Inicial:
  425.         la $a0, String7         #printa a string que pede para informar o saldo inicial do cliente
  426.         li $v0,4
  427.         syscall
  428.         li $v0,5            #le o saldo inicial do cliente
  429.         syscall
  430.         sw $v0,0($a2)           #salva o saldo na memoria
  431.         addi $a2,$a2,4          #vai para a proxima posiçao de memoria que podera ter um cadastro
  432.         move $v0,$a2            #salva o endereoço em $v0 para retornar para o programa principal
  433.         move $v1,$a3
  434.         j RETURN            #retorna para o programa principal
  435.         nop
  436.                        
  437. CADASTROFUNC:   bne $a1,2,ERROR1        #verifica se [e para fazer cadastro de funcionário, se não vai para ERROR1
  438.         nop
  439.         addi $s4,$s4,1
  440.         addi $s3,$s3,1          #Contador para número de funcionários
  441.         sw $s3,0($a3)           #coloca na memória o número do funcionário
  442.         addi $a3,$a3,4          #vai para a próxima posição que corresponde ao nome
  443.         #Informe o Nome:
  444.         la $a0, String4         #printa a string que pede para informar o nome do funcionário
  445.         li $v0,4           
  446.         syscall
  447.         move $a0,$a3            #coloca em $a0 o endereço onde será salvo o nome
  448.         li $a1,15           #determina o número máximo de char do nome
  449.         li $v0,8            #lê nome
  450.         syscall
  451.         addi $a3,$a3,16         #vai para próxima posição da memória que é do cpf
  452.         #CPF:
  453.         la $a0, String5         #printa string que pede o cpf
  454.         li $v0,4
  455.         syscall
  456.         move $a0,$a3            #salva endereço que é para colocar o cpf em $a0
  457.         li $a1,12           #determina o número máximo de char do cpf
  458.         li $v0,8            #lê cpf
  459.         syscall
  460.         addi $a3,$a3,12         #vai para a próxima posição de memória que corresponde a senha do funcionário
  461.         #Senha:
  462.         la $a0, String6         #printa string que pede para informar senha
  463.         li $v0,4
  464.         syscall
  465.         li $v0,5            #lê senha
  466.         syscall
  467.         sw $v0,0($a3)           #salva senha na memória
  468.         addi $a3,$a3,4          #vai para a próxima posição disponível para cadastro
  469.         move $v1,$a3            #salva endereço de próximo funcionário em $v1
  470.         move $v0,$a2            #salva endereço de próximo cliente em $v0
  471.         j RETURN            #vai para RETURN
  472.         nop
  473.            
  474. ERROR1:     la $a0, String1         #printa string informando que opção escolhida não existe
  475.         li $v0,4
  476.         syscall
  477.                
  478. RETURN:     jr $ra              #volta para o programa principal
  479.         nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement