ADD ( Integer Add ) :加算
ADD DEST,SRC 動作:DEST←DEST+SRC 影響を受けるフラグ:OF,SF,ZF,AF,CF,PF DEST:レジスタ、メモリー SRC :レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)
ADC ( Add with Carry ) :キャリーも含めて加算
ADC DEST,SRC 動作:DEST←DEST+SRC+CF 影響を受けるフラグ:OF,SF,ZF,AF,CF,PF DEST:レジスタ、メモリー SRC :レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)
CODE SEGMENT ASSUME DS:CODE,CS:CODE,ES:CODE,SS:CODE .186 ORG 100h START: mov dl,DATA1 add dl,DATA2 add dl,'0' mov ah,2 int 21h mov ax,4c00h int 21h DATA1 byte 5 DATA2 byte 3 ENDS END START ; 一部のコンパイラでは、 ;CODE ENDS ; END START ;と記述しなければいけないようです |
【用例】
|
MOV EAX,[SRC1] ;> | メモリ上の64ビット数値1の下位32ビットを取得します。 |
ADD EAX,[SRC2] ;> | メモリ上の64ビット数値2の下位32ビットと加算します。 |
MOV [DEST],EAX ;> | 結果の下位32ビットをメモリ上の結果に保存します。 |
MOV EAX,[SRC1+4] ;> | メモリ上の64ビット数値1の上位32ビットを取得します。 |
ADC EAX,[SRC2+4] ;> | メモリ上の64ビット数値2の上位32ビット(もしあれば下位からの桁上げ)と加算します。 |
MOV [DEST+4],EAX ;> | 結果の上位32ビットをメモリ上の結果に保存します。(この結果、64ビットの加算となる) |