数値演算と思いきや文字コード(Ascii)の演算でしょうこれは
addというのは加算命令らしい.レジスタDLに1を入れて,それからaddを使って5を足すというサンプルコードがあったのだけれども,出力させるためにさらに0x30を足せというのになんか違和感を感じたので代わりに0x35を足してみた.
; OnePlusFive.asm bits 16 org 0x100 mov dl, 1 ;add dl, 5 add dl, 0x35 ;add dl, 0x30 mov ah, 02 int 0x21 mov ah, 0x4C mov al, 0 int 0x21
すると実行結果は
D:\asmwork>nasm -f bin OnePlusFive.asm -o OnePlusFive.com D:\asmwork>OnePlusFive.com 6 D:\asmwork>
予想通りなわけで."AH=02"+"int 0x21"がレジスタDLにある文字を標準出力にという意味だから,そうなんだね.
このサンプルでは"1+5"をやりますとテキストは言ってるけど,現実的には数値演算ではなくAsciiのコードを加算したわけだ.addそのものの機能はこれでも分かるわけだけど.数値演算の結果出力って意外と面倒ということなのかな?