0

私はアセンブリに不慣れで、私が持っているこのコードのように、いくつかの変数がどこからともなく魔法のように値を取得する方法を混乱させています(プログラムはすべて入力されたシンボルを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 を使用しています)

4

0 に答える 0