User input/Text: Difference between revisions

(Corrected the second message.)
Line 9:
 
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B/4 version Buster 64 bits}}
<lang AArch64 Assembly>
//Consts
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program inputText64.s */
 
/*******************************************/
/* Constantes file */
/*******************************************/
/* for this file see task include a file in language AArch64 assembly*/
.include "../includeConstantesARM64.inc"
.equ BUFFERSIZE, 100
.equ STDIN, 0 mov x0,STDIN // Linuxlinux input console
/*******************************************/
/*.equ InitializedSTDOUT, data1 // linux output */console
.equ READ, 63
/*******************************************/
.equ WRITE, 64
.equ EXIT, 93
 
.data
szMessDebenterText: .asciz "Enter text : \n"
szMessNumcarriageReturn: .asciz "Enter number : \n"
 
szCarriageReturn: .asciz "\n"
//Read Buffer
/*******************************************/
/* UnInitialized data */
/*******************************************/
.bss
sBufferbuffer: .skip BUFFERSIZE
 
/*******************************************/
/* code section */
/*******************************************/
.text
.global main_start
 
main: // entry of program
qAdrszMessNumquadEnterText: .quad szMessNumenterText
ldr x0,qAdrszMessDeb
qAdrsBufferquadBuffer: .quad sBufferbuffer
bl affichageMess
quadCarriageReturn: .quad carriageReturn
mov x0,STDIN // Linux input console
 
ldr x1,qAdrsBuffer // buffer address
writeMessage:
mov x2,BUFFERSIZE // buffer size
mov x8x2,READ0 // requestreset tosize readcounter to datas0
 
svc 0 // call system
checkSize: ldr x1,qAdrsBuffer // bufferget size addressof input
movldrb x2w1,#0 [x0,x2] // endload char with offset of stringx2
strbadd w2x2,[x1x2,x0]#1 // store byte at the end of input string// (x0add contains1 numberchar ofread characters)legnth
movcbz x2w1,#0output // endif ofchar stringfound
ldrb x0,qAdrsBuffercheckSize // buffer address // loop
 
bl affichageMess
output:
ldr x0,qAdrszCarriageReturn
svcmov 0x1,x0 // performmove thestring address into system call func parm
bl affichageMess
mov x8x0,READSTDOUT // request to read datas
mov x8,WRITE #EXIT // request to exit program
ldr x0,qAdrszMessNum
/* code section svc 0 // trigger system */write
bl affichageMess
movret x0,STDIN // Linux input console
 
ldr x1,qAdrsBuffer // buffer address
 
mov x2,BUFFERSIZE // buffer size
_start:
mov x8,READ // request to read datas
//Output enter text
svc 0 // call system
ldr x1x0,qAdrsBuffer quadEnterText // bufferload addressenter message
bl writeMessage // output enter message
mov x2,#0 // end of string
 
strb w2,[x1,x0] // store byte at the end of input string (x0
//Read User Input
ldrmov x0,qAdrsBufferSTDIN // bufferlinux input addressconsole
blldr conversionAtoDx1,quadBuffer // conversionload stringbuffer inaddress number in x0
mov x2,BUFFERSIZE // load buffer size
mov x8,READ // request to read data
100: /* standard end of the program */
movsvc x0, #0 // returntrigger system read codeinput
 
mov x8, #EXIT // request to exit program
//Output User Message
svc 0 // perform the system call
mov x2, #0 // prep end of string
ldr x1,qAdrsBufferquadBuffer // load buffer address
qAdrszMessDeb: .quad szMessDeb
strb w2,[x1, x0] // store x2 0 byte at the end of input string, offset (x0
qAdrszMessNum: .quad szMessNum
ldr x1x0,qAdrsBufferquadBuffer // load buffer address
qAdrsBuffer: .quad sBuffer
bl writeMessage
qAdrszCarriageReturn: .quad szCarriageReturn
/********************************************************/
//Output newline
/* File Include fonctions */
ldr x0,qAdrszCarriageReturnquadCarriageReturn
/********************************************************/
bl writeMessage
/* for this file see task include a file in language AArch64 assembly */
 
.include "../includeARM64.inc"
//End Program
svcmov x0, #0 // callreturn systemcode
mov x8, #EXIT // request to exit program
main: svc 0 // entrytrigger end of program
 
</lang>
Anonymous user