部分程序段如下:
MOV AX,0ABCH
DEC AX
AND AX,00FFH
MOV CL,4
SAL AL,1
MOV CL,AL
ADD CL,78H
PUSH AX
POP BX
解答如下
MOV AX,0ABCH ;立即数寻址,将0ABCH送入AX,AH中为0AH,AL中为BCH.
DEC AX ;减1操作,将AX减1并送入AX.AX=0ABBH
AND AX,00FFH ;逻辑"与"运算,AX∩00FFH得到的结果送入AX,AX=00BBH(如果不理解可以化为二进制再转化回16进制)
MOV CL,4 ;将4送入CL(其中4为十进制,也可以为二进制或者16进制,并不影响)CL=04H
SAL AL,1 ;算数左移,将 AL算数左移1位,即将10111011B左移1位得01110110B,得AL=76H(注意状态标志位的变化情况)
MOV CL,AL ;寄存器寻址,将AL中内容送入CL得CL=76H
ADD CL,78H ;加法,将CL与78H相加,并把结果送入CL.得CL=EEH
PUSH AX ;压栈指令,将AX中的数据压入堆栈中,堆栈指针-2指向新栈顶.0076H→AX
POP BX ;出栈指令,将栈顶的数据弹出并送入BX,堆栈指针+2指向新栈顶.0076H→BX
如果其中有错误欢迎指出并会立即改正。
下一篇会介绍一道关于出入栈的题目。