m328def.incの中身をのぞいて正確にレジスタを叩いたら動いた
スタックポインタの初期化のビット演算が合っているか不安だけど
.org 0x0000 .equ DDRB, 0x04 .equ PORTB, 0x05 .equ RAMEND, 0x08FF .equ SPL, 0x3D .equ SPH, 0x3E rjmp reset reset: ldi R16,RAMEND&0x00ff ;LOW(RAMEND)の代わり out SPL, R16 ldi R16,RAMEND>>8 ; HIGH(RAMEND)の代わり out SPH, R16 main: sbi DDRB, 5 loop: sbi PORTB,5 rcall delay cbi PORTB,5 rcall delay rjmp loop delay: ldi R17,16*4 delay1s: ldi R18,250 delay250ms: ldi R19,250 delay1ms: nop dec R19 brne delay1ms dec R18 brne delay250ms dec R17 brne delay1s ret
ASM = avr-as INCLUDE = DEVICE = atmega328p OBJ = main.o SRC = main.s all: $(ASM) -mmcu=$(DEVICE) -o $(OBJ) $(SRC) avr-ld $(OBJ) -o main.elf avr-size --format=avr --mcu=atmega328p main.elf avr-objcopy -j .text -j .data -O ihex main.elf main.hex flash: avrdude -c arduino -p atmega328p -P /dev/tty.usb* -U flash:w:main.hex:i