A 100
MOV SI,0081 ;定位字符串源址为命令行
LODSB ;载入[si]处一个字符到寄存器al中
CMP AL,20 ;将之与空格相比较
JZ 0103 ;等于空格则跳向 lodsb, 载入下一字符
DEC SI ;否则 si 减一, 字符串指针指向第一参数
CMP AL,30 ;将载入的 al 值与字符 '0' 相比较
JB 0128 ;若小于 '0' 则跳向 mov dx,0133 处显示帮助
SUB AX,AX ;ax 置零
SUB BH,BH ;bx 置零
MOV DX,000A ;dx 置 10 (保存进制值)
MOV BL,[SI] ;取 [si] 处的字符到 bl 中
INC SI ;字符串指针 si 加一
SUB BL,30 ;减去 '0' (将 bl 的值有字符数转换为二进制数)
CMP BL,DL ;比较 bl 与 dl 的值 (测试 bl 是否是非法字符≥10)
JNB 0124 ;bl ≥ 10 则跳向 mov ah,4c (置 errorlevel)
MUL DX ;将原数 ax 乘以 10 (dx)
ADD AX,BX ;将原数 ax 加上 新数 bx
JNB 0111 ;cf=0 (??) 则跳回 mov dx, 000a (转换下一个字符)
MOV AH,4C ;置 errorlevel 退出
INT 21
MOV DX,0133 ;定位 [0133] 处的帮助字符串
MOV AH,09 ;显示 [dx] 处的字符串
INT 21
SUB AL,AL ;al 置零
JMP 0124 ;跳回mov dx,0133处显示帮助
DB 'EL! n' 0d 0a 'sets errorlevel to n=0..255' 0d 0a 24
r cx
58
n el!.com
w
q |
|