请求汇编高手 帮我对程序进行注释~多谢~~~

来源:百度知道 编辑:UC知道 时间:2024/06/12 14:34:55
data segment
table db 00h,01h,04h,09h,16h
db 25h,36h,49h,64h,81h
x db ?
y db ?
mess1 db 'Please input one number(0-9) X =',20h,'$'
mess2 db 0dh,0ah,29 dup (20h), 'Y =',20h,'$'
data ends
code segment
assume cs:code,ds:data
start: MOV AX,DATA
MOV DS,AX
KEY_IN: MOV DX,OFFSET MESS1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
CMP AL,1bH
JZ exit
AND AL,0FH
MOV X,AL
MOV BX,OFFSET TABLE
XLAT TABLE
MOV Y,AL
MOV DX,OFFSET MESS2
MOV AH,9
INT 21H
MOV DL,Y
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,6
INT 21H
MOV DL,Y
MOV CL,4
AND DL,0FH
ADD DL,30H
MOV AH,6
INT 21H
MOV DL,0dh
MOV AH,6
INT 21H
MOV DL,0ah
INT 21H
jmp KEY_IN
exit: MOV AH,4CH
INT

data segment
table db 00h,01h,04h,09h,16h
db 25h,36h,49h,64h,81h
x db ?
y db ?
mess1 db 'Please input one number(0-9) X =',20h,'$'
mess2 db 0dh,0ah,29 dup (20h), 'Y =',20h,'$'
;-------------------
mess3 db 'Input Error!Must be numberkey(0-9) or ESC',0DH,0AH.'$'
;-------------------
data ends
code segment
assume cs:code,ds:data
start:MOV AX,DATA
MOV DS,AX;把数据段地址赋给DS
KEY_IN:MOV DX,OFFSET MESS1
MOV AH,9
INT 21H;显示mess1提示信息
MOV AH,1
INT 21H;读取1个按键
CMP AL,1bH;ESC?
JZ exit;是则退出
;----很显然,还需要增加中间这些限制----
CMP AL,'0'
JB RE_IN
CMP AL.'9'
JA RE_IN
;----来排除输入非数字按键的情况--------
AND AL,0FH;转按键成数值
MOV X,AL;保存到变量X
MOV BX,OFFSET TABLE
XLAT;原来为XLAT TABLE
;查table表第[X]项的值到AL
MOV Y,AL;放入变量Y
MOV DX,OFFSET MESS2
MOV AH,9
INT 21H;显示mess2
MOV DL,Y