IN b
IN a
ADD a,0001
ADD b,0001
JNC 0010
MOV b,a
MOV a,0000
ADD a,0001
ADD b,0001
JNC 0111
MOV b,a
OUT b
このマシン語、アセンブリ言語は足すことしかできない。
しかも変数は二つのみ。レジスタというがaとbのみしかない
これで引き算をするのは 思いつくのにおれで五時間かかった。
基本的には
まず引かれる数を、オーバーフロー値16に向けて勝手に両者に加算してって
引かれる数を16にしてしまう(差は変わらない ここがポイント
そして足されてしまってる引く数(増えてるよ じゃないほう、つまり引かれる数をリセット 0にする
実は16と足されてしまってる引く数 の差は求める差だね
んだから このあと足されてしまってる引く数とリセットした数を同時に加算していくと
足されてしまってる引く数がオーバーフローしたとき、リセットしたほうに差があらわれる。
んな…もげもが。