Язык Ассемблера SPARC/Print Decimal: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
{{BookCat}}
м <source> -> <syntaxhighlight> (phab:T237267)
Строка 18: Строка 18:
Программа, печатающая ''"26 августа 2009 года"'':
Программа, печатающая ''"26 августа 2009 года"'':


<source lang="asm">
<syntaxhighlight lang="asm">
.section ".data"
.section ".data"
date: .asciz "Date: %d %s %d %s\n"
date: .asciz "Date: %d %s %d %s\n"
Строка 44: Строка 44:
mov 0, %o0 ! move 0(return address) into %o0
mov 0, %o0 ! move 0(return address) into %o0
ta 8 ! вызов системы
ta 8 ! вызов системы
</syntaxhighlight>
</source>


{{BookCat}}
{{BookCat}}

Версия от 16:05, 16 апреля 2020

Вывод строк и чисел с помощью printf

С помощью функции printf можно выводить не только строки, но и числа. Для этого в строку необходимо добавить специальные символы:

  • %d или %i - Целое со знаком в десятеричной системе счисления
  • %o - Целое в восьмеричной системе
  • %x или %X - Целое в шестнадцатиричной системе
  • %U - Целое без знака
  • %c - Character
  • %s - C-String, т.е. строка, заканчивающаяся на null
  • %f - Double
  • %e или %E - Double
  • %g или %G - Double
  • %n - Количество символов, выводимых данной функцией

При вызове функции printf эти символы заменяются на их значения, передаваемые в регистры %o1 - %o5.

Программа, печатающая "26 августа 2009 года":

.section ".data"
date:	.asciz "Date: %d %s %d %s\n"
month:	.asciz "августа"
year:	.asciz "года"

.section ".text"

.align	4
.global	main

main:
save	%sp, -96, %sp	! выделяем память

set	date, %o0
mov	26, %o1
set	month, %o2
mov	2009, %o3
set	year, %o4
call	printf
nop

! выход из программы
mov	1, %g1	! move 1(exit() syscall) into %g1
mov	0, %o0	! move 0(return address) into %o0
ta	8	! вызов системы