INCLUDE Irvine32.inc
.data
fullName BYTE "Bob Johnson",0
nameSize = ($ - fullName) - 2
.code
main PROC
mov ECX,nameSize
mov ESI,OFFSET fullName
Sum:
mov EBX,[ESI+ECX]
add EAX,EBX
loop Sum
exit
main ENDP
END main
そのため、文字列から一度に 1 文字を読み取り、それを EBX レジスタに格納してから、その文字の値を取得し、EAX で実行中の合計を保持したいという問題があります。
8 ビットの符号なし算術演算を使用して、文字列の文字のすべての ASCII コードを加算します。オーバーフローは無視されます。最終的な値はチェックサムです。たとえば、文字列が「Joe」の場合、ASCII 値は 4A、6F、65 です。合計は 11E です。