汇编MOV的一点疑问!!!

DATA SEGMENT USE16

MES1 DB 'Please input:',0AH,0DH,'$'
SD DB ?
DATA ENDS
然后 MOV AH,1

INT 21H

MOV SD,AL
然后就对SD进行操作了
想问下MOV的目的操作数可以是变量(SD)吗??不是只能是寄存器和存储器吗?

应该是不可以的,改变静态变量没有意义

MOV AH,1
INT 21H 是自动转入中断子程序的入口
通过上面两条指令,会把输入或者读取的字符放到AL中,所以是MOV SD,AL

全部程序是这样的

STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS

DATA SEGMENT USE16 ;段为16位段
MES1 DB 'Please input:',0AH,0DH,'$'
SD DB ?
DATA ENDS

CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA
MOV DS,AX

   MOV  DX,OFFSET MES1         ;show message
   MOV  AH,09H      
   INT  21H     

   MOV  AH,1                   
   INT  21H                    
   MOV  SD,AL           ;不懂SD       

   MOV  SI,OFFSET SD
   MOV  AL,DS:[SI]
   AND  AL,0F0H         
   ;取高4位
   MOV  CL,4
   SHR  AL,CL
   CMP  AL,0AH          ;是否是A以上的数
   JB   C2      
   ADD  AL,07H      

C2: ADD AL,30H

MOV DL,AL ;show character
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H

WAIT1: MOV AH,1 ;判断是否有按键按下
INT 16H
JZ WAIT1 ;无按键则跳回继续等待,有则退出

   MOV  AX,4C00H        ;go back to dos
   INT  21H

CODE ENDS
END START

sd就是在存在内存中的呀,所以mov sd,al改变了内存的值相当于mov [bx],al。