主题:[讨论]谁能解释这个?
DATAS SEGMENT
TABLE dw 0000h,0001h,0004h,0009h,0106h,0205h,0306h,0409h,0604h,0801h
RESULT db 0dh,0ah,'The result is:' ,0dh,0ah
num db 0
MATH db '^2 = '
RCT dw 0000h
Msg3 db 0dh,0ah,'Press any key to Exit!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea di,num
mov ah,1
int 21h
mov [di],al
sub al,30h
sal al,1
lea si,TABLE
xor ah,ah
add si,ax
mov dx,[si]
add dl,30h
add dh,30h
lea di,RCT
mov [di],dh
mov [di+1],dl
lea dx,RESULT
mov ah,9
int 21h
Exit:
mov ah,1
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
看了这程序就是怎么也判断不出它的功能,运行了之后才知道的。
不知道用的什么原理。
另外 0dh,0ah,'Press any key to Exit!$' '^2 = '没有用输出语句,为什么也能显示在屏幕上,真的不明白。
为什么Msg3 db 0dh,0ah,'Press any key to Exit!$可以自己输出 而且去掉后影响整个程序?
TABLE dw 0000h,0001h,0004h,0009h,0106h,0205h,0306h,0409h,0604h,0801h
RESULT db 0dh,0ah,'The result is:' ,0dh,0ah
num db 0
MATH db '^2 = '
RCT dw 0000h
Msg3 db 0dh,0ah,'Press any key to Exit!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea di,num
mov ah,1
int 21h
mov [di],al
sub al,30h
sal al,1
lea si,TABLE
xor ah,ah
add si,ax
mov dx,[si]
add dl,30h
add dh,30h
lea di,RCT
mov [di],dh
mov [di+1],dl
lea dx,RESULT
mov ah,9
int 21h
Exit:
mov ah,1
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
看了这程序就是怎么也判断不出它的功能,运行了之后才知道的。
不知道用的什么原理。
另外 0dh,0ah,'Press any key to Exit!$' '^2 = '没有用输出语句,为什么也能显示在屏幕上,真的不明白。
为什么Msg3 db 0dh,0ah,'Press any key to Exit!$可以自己输出 而且去掉后影响整个程序?