Jde o cvičení. Můj dosavadní kód vypadá následovně.
.h8300s
.equ syscall, 0x1FF00
.equ GETC, 0x0111
.equ PUTC, 0x0112
.equ PUTS, 0x0114
.equ slm, 0x00FF
.data
string: .space slm
buffer_in: .space 1
buffer_out: .space 1
input: .asciz "Zadej vetu: "
result: .asciz "Obracene: "
newline: .asciz "\n"
.align 2
par1: .long buffer_in
par2: .long buffer_out
par3: .long input
par4: .long result
par_row: .long newline
.align 1
.space 0x100
stck:
.text
.global _start
_start: mov.l #stck,ER7
begin: mov.w #PUTS,R0
mov.l #par_row,ER1
jsr @syscall
mov.w #PUTS,R0
mov.l #par3,ER1
jsr @syscall
jsr @inp_str
mov.w #PUTS,R0
mov.l #par4,ER1
jsr @syscall
cykl1: cmp.l #0, ER3
bne cykl1_1
jmp cykl1_end
cykl1_1: mov.l #0,ER5
sub.l #1,ER3
mov.b @(string,ER3),R4L
cmp.b #32,R4L
ble cykl1_spa
cykl1_word:
add.l #1,ER5
cmp.l #0,ER3
beq cykl1_print
sub.l #1,ER3
mov.b @(string,ER3),R4L
cmp.b #32,R4l
bgt cykl1_word
add.l #1,ER3
jmp cykl1_print
cykl1_spa:
add.l #1,ER5
cmp.l #0,ER3
beq cykl1_print
sub.l #1,ER3
mov.b @(string,ER3),R4L
cmp.b #32,R4l
ble cykl1_spa
add.l #1,ER3
cykl1_print:
mov.l ER3,ER6
cykl1_print_1:
sub.l #1,ER5
mov.b @(string,ER6),R4L
mov.b R4L,@buffer_out
mov.w #PUTC,R0
mov.l #par2,ER1
jsr @syscall
add.l #1,ER6
cmp #0,ER5
bne cykl1_print_1
jmp cykl1
cykl1_end:
mov.w #PUTS,R0
mov.l #par_row,ER1
jsr @syscall
jmp begin
inp_str:
mov.l #0,ER3
cykl:
mov.w #GETC,R0
mov.l #par1,ER1
jsr @syscall
mov.b @buffer_in,R4L
cmp.b #13,R4L
beq cykl_end
cmp.l #slm,ER3
beq cykl
mov.b R4L,@(string,ER3)
add.l #1,ER3
jmp cykl
cykl_end:
mov.w #GETC,R0
mov.l #par1,ER1
jsr @syscall
rts
.end