2020-03-17から1日間の記事一覧

.EQUディレクティブ、.SETディレクティブ、.ORGディレクティブ、.INCLUDEディレクティブ

pp.47-48 ディレクティブはアセンブラへの指令。「pseudo命令」(疑似命令)とも言う。スードウ。 .EQUはequate。定数値または固定アドレスを定義するのに使う。 .equ sute = 2 ; 定数を定義する。 ldi r16, sute .equ where = 0x100 ; アドレスを定義する。 l…

ステータスレジスタ(SREG)

pp.41-42 「flag register」とも言う。レジスタ。 C~Hが「conditional flags (条件フラグ)」。 Cはcarryフラグ。一般に符号なし演算のエラー検出に使う。 Zはzeroフラグ。結果が0のときにフラグが立つ。 Nはnegativeフラグ。結果のビット[7]が1のときにフラ…

MOV命令、INC命令、SUB命令、DEC命令、COM命令

pp.37-40 MOVはGPR同士で値をコピーし合う命令。 INCはGPRの値を1だけインクリメントする命令。 SUBはADDの逆。 DECはGPRの値を1だけデクリメントする命令。 COMはcomplement (1の補数)。~と同じ。 ldi r16, 0xa ; r16に即値をロードする。 mov r0, r16 ; r0…

IN命令、OUT命令

pp.34-36 INは、I/OレジスタからGPRへ1バイトをロードする命令。 I/OメモリーのアドレスはI/Oアドレスとデータメモリーアドレスの2つがある。データメモリーのアドレスは、「データメモリーアドレス」と呼ばれる一意のアドレスである。また各I/Oレジスタ(Spe…

LDS命令、STS命令

pp.32-34 LDSはLoad Direct from Data Space。 データ空間(IOレジスタ、SRAM、GPR)から汎用レジスタ(GPR)へ値をロードする。 STSはStore Direct to Data Space。 汎用レジスタ(GPR)の値をデータ空間(IOレジスタ、SRAM、GPR)へストアする。 ldi r16, 0x55 ; r…