私はアセンブリに不慣れで、私が持っているこのコードのように、いくつかの変数がどこからともなく魔法のように値を取得する方法を混乱させています(プログラムはすべて入力されたシンボルを1つのASCIIコードでシフトします)
.model small
.stack 100h
.data
Enterr db 10, 13, "$"
buffer db 255
number db ?
symb db 255 dup (?)
.code
START:
MOV ax, @data
MOV ds, ax
MOV ah, 10
MOV dx, offset buffer
INT 21h
MOV ah, 9
MOV dx, offset ENTERR
INT 21h
MOV bx, offset symb
MOV cl, number
MOV ch, 0
CMP cx, 0
JE terminate
cycle:
INC byte ptr [bx]
INC bx
LOOP cycle
MOV byte ptr [bx], '$'
MOV ah, 9
MOV dx, offset symb
INT 21h
terminate:
MOV ah, 4Ch
MOV al, 0
INT 21h
END START
ループの直前に、cx に入力されたシンボルの数があり、そこからサイクルが開始されます。この cx の値は、変数「number」が cl にコピーされたときに取得されました。変数「number」はどのようにしてそのような値を取得したのでしょうか? 交換する
MOV cl, number
と
MOV cl, [number]
プログラムには影響しません。何故ですか?によって定義されたすべての変数
variable db ?
入力されたシンボルの数など、同じ値を持っていますか? (TASM を使用しています)