Hello I'm doing a job at ARM Assembly using the Unicamp simulator and I have a problem. I need to make a simple list with the Insert, Remove, and Print options. I am able to insert items (name and price of a product), however I am doing tests for the option to print the files, and is giving the following error: Youcanseethatthenameoftheproductisprinting,butthisisgivingerrorwhenitwillprinttheprice.Anditisalsoprintingtheprogramendmessage.IfIcommentonthepartofthecodethatprintsthename,thepriceisprintednormally,soIbelievetheerrorisinthatpart.
Belowisthecode:
@---------------------------------OBSERVAÇÕES------------------------------------------/*-Registradoresreservadosparaaschamadasdosistema:r0,r1,r2,r7- Registradorquecontrolaaposiçãodoprodutor12*/
.global_start@ligadornecessitadesterótulo
@---------------------------------CONSTANTES------------------------------------------@tamanhodoproduto.equtam_prod_nome,255
@precodoproduto.equtam_prod_preco,4
@escolhamenu.equtam_escolha,5
@endereçodonomedoproduto.setpos_prod_nome,0x1000
@endereçodoprecodoproduto.setpos_prod_preco,0x0
_start:
movr12,#0@Contadordovetor
bemvindo:@Solicitaonomedoprodutomovr0,#1@Comandodesaidaldrr1,=msg_bemvindo@Enderecodamensagemldrr2,=len_bemvindo@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055
bmenu
@----------------------------------PROGRAMMENU------------------------------------------menu: movr1,#0
@Apresentaomenuprincipalmovr0,#1@Comandodesaidaldrr1,=msg_menu@Enderecodamensagemldrr2,=len_menu@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055@Fazaleituradamensagemdigitadapelousuariomovr0,#0@Comandodeentradaldrr1,=menu_escolha@Enderecodamensagemldrr2,=tam_escolha@Tamanhomaximoaserlidomovr7,#3@Sinalizaaentradanoconsolesvc#0x55@Chamaafunçãodeacordocomaescolhacmpr1,#1@Verificaseaopçãodigitadanãoéincluirbeqcarrega_prodcmpr1,#2beqexcluircmpr1,#3beqvisualizarcmpr1,#4beqsaircmpr1,#5beqteste
@----------------------------------PRODUCTENTRY------------------------------------------load_prod: movr5,#0@Zerotherecorder movr6,#0@Zerotherecorder cmpr12,#0@Checksifthereisnoproduct,ifitdoesnot,itdoesnotexecute beqrequests_prod bltload_prod
request_prod: @Requestproductname movr0,#1@Outputcommand ldrr1,=msg_prod_name@Messageaddress ldrr2,=len_prod_name@Messagesizetobewritten movr7,#4@Signalstheoutputontheconsole svc0x055
@Fazaleituradamensagemdigitadapelousuariomovr0,#0@Comandodeentradaldrr1,=produto_nome@Enderecodamensagemldrr2,=tam_prod_nome@Tamanhomaximoaserlidomovr7,#3@Sinalizaaentradanoconsolesvc#0x55@Armazenaonomedoprodutonamemórialdrr3,=pos_prod_nome@Posiçãodamemóriaqueficaráovetordeprodutosstrr1,[r3,r5]@Solicitaoprecodoprodutomovr0,#1@Comandodesaidaldrr1,=msg_prod_preco@Enderecodamensagemldrr2,=len_prod_preco@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055@Fazaleituradamensagemdigitadapelousuariomovr0,#0@Comandodeentradaldrr1,=produto_preco@Enderecodamensagemldrr2,=tam_prod_preco@Tamanhomaximoaserlidomovr7,#3@Sinalizaaentradanoconsolesvc#0x55@Armazenaoprecodoprodutonamemórialdrr3,=pos_prod_preco@Posiçãodamemóriaqueficaráovetordeprodutosstrr1,[r3,r6]btesteaddr12,r12,#1bmenu
@---------------------------------EXCLUSIONOFDATA------------------------------------------delete:
@---------------------------------VIEWINGDATA------------------------------------------view:
@---------------------------------TESTING-DELETINGAFTERCONCLUDING------------------------------------------
@Displaysproductregistrationfortestingtest: movr12,#0 ldrr3,=pos_prod_name ldrr4,=pos_prod_preco
movr0,#1@Comandodesaidaldrr1,=msg_prod_nome_ex@Enderecodamensagemldrr2,=len_prod_nome_ex@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055movr0,#1@Comandodesaidaldrr1,[r3,r12]@Enderecodamensagemldrr2,=tam_prod_nome@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055movr0,#1@Comandodesaidaldrr1,=msg_prod_preco_ex@Enderecodamensagemldrr2,=len_prod_preco_ex@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055movr0,#1@Comandodesaidaldrr1,[r4,#0]@Enderecodamensagemldrr2,=tam_prod_preco@Tamanhomensagemaserescritamovr7,#4@Sinalizaasaídanoconsolesvc0x055bsair
@----------------------------------USEFULFUNCTIONS------------------------------------------
@Controlsvectorpositionload_prod: ldrr5,=pos_prod_name@Loadsthestartingpositionoftheproductname ldrr6,=pos_prod_preco@Loadsthestartingpositionoftheproductprice ldrr7,=tam_prod_name@Loadthesizeoftheproductname ldrr8,=tam_prod_preco@Loadproductpricesize
btam_vetor
tam_vetor: movr10,#0@Zerothecounter
addr5,r5,r7@Acrenta1aoindicedovetorprod_nomeaddr6,r6,r8@Acrenta1aoindicedovetorprod_precocmpr10,r12beqsolicita_prod@Seforigualvaiatéafunçãoqueoutilizaráblttam_vetor@Sefordiferente,continuaráapercorrerovetor
@---------------------------------FINISHTHEPROGRAM------------------------------------------leave: movr0,#1@Outputcommand ldrr1,=msg_finalization@Messageaddress ldrr2,=len_finalizacao@Messagesizetobewritten movr7,#4@Signalstheoutputontheconsole svc0x055
@fazeraquioprogramafinalizar
@---------------------------------VARIABLESANDMESSAGESFORTHEUSER------------------------------------------@bufferwherestoredcharacterswillbestoredmenu_collection: .skiptam_choose
product_name: .skiptam_prod_name
product_preco: .skiptam_prod_preco
@Productnamerequestmessagemsg_welcome: .ascii"Welcome! \ n \ n"
len_bemvindo =. - msg_being
msg_menu:
.ascii "1 - Add Product \ n2 - Delete \ n3 - View \ n4 - Exit \ n5 - Test \ n \
len_menu =. - msg_menu
@Product name request message
msg_prod_name:
.ascii "Enter the product name \ n"
len_prod_name =. - msg_prod_name
@Program finalization message
msg_finalization:
.ascii "\ nProgram finalized \ n"
len_finalizacao =. - msg_finalization
@Product Price Request Message
msg_prod_preco:
.ascii "\ nEnter the price of the product \ n"
len_prod_preco =. - msg_prod_preco
msg_prod_name:
.ascii "Name:"
len_prod_name_ex =. - msg_prod_name_ex
msg_prod_preco_ex:
.ascii "Price:"
len_prod_preco_ex =. - msg_prod_preco_ex
@ line break to display on console
BreakingLine:
.ascii "\ r \ n \ r"