Язык Ассемблера SPARC/Print Decimal: различия между версиями
Содержимое удалено Содержимое добавлено
Oleg4280 (обсуждение | вклад) {{BookCat}} |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 18: | Строка 18: | ||
Программа, печатающая ''"26 августа 2009 года"'': |
Программа, печатающая ''"26 августа 2009 года"'': |
||
< |
<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 ! вызов системы