|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
16 楼』:
Quote: | Originally posted by s11ss at 2008-12-9 22:48:
无按键是直接回车的情况么?如果只用0号的话,al是0d啊 |
|
无按键就是沒动键盘.
|
|
2008-12-10 08:32 |
|
|
wxcute
中级用户
积分 458
发帖 211
注册 2006-7-26
状态 离线
|
『第
17 楼』:
真的很强,像我等不懂汇编的就只能望洋兴叹了。
|
┌───────┐
├→学习→实践→┤
└───────┘ |
|
2008-12-10 14:00 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『第
18 楼』:
上面的程序中mov ax,0长3字节,改mov ah,0或xor ah,ah或sub ah,ah就能少1个字节。
其实,此类程序最短的只要8字节。
DEBUG
a
mov ah,0
int 16h
mov ah,4Ch
int 21h
rcx
8
nkeycode.com
w
q
此帖被 +7 点积分 点击查看详情 评分人:【 s11ss 】 | 分数: +7 | 时间:2008-12-10 14:53 |
|
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2008-12-10 14:31 |
|
|
s11ss
银牌会员
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第
19 楼』:
Quote: | Originally posted by 本是 at 2008-12-10 02:31 PM:
上面的程序中mov ax,0长3字节,改mov ah,0或xor ah,ah或sub ah,ah就能少1个字节。
其实,此类程序最短的只要8字节。
DEBUG
a
mov ah,0
int 16h
mov ah,4Ch
... |
|
我的意思就是不用int 16h的1号功能,看来还是行的~
其实好像可以不写com,直接用debug调用:)
|
|
2008-12-10 14:55 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
20 楼』:
Quote: | Originally posted by 本是 at 2008-12-10 14:31:
上面的程序中mov ax,0长3字节,改mov ah,0或xor ah,ah或sub ah,ah就能少1个字节。
其实,此类程序最短的只要8字节。
DEBUG
a
mov ah,0
int 16h
mov ah,4Ch
... |
|
还是误解了,试一下12楼的例子就会发现与上面的程序不一样之处
|
|
2008-12-10 15:32 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
21 楼』:
@echo off
call inc 2>nul
if %errorlevel%==1 (
>inc.src echo ecs:100 B8 00 01 CD 16 B8 00 00 74 02 CD 16 B4 4C CD 21
>>inc.src echo rcx
>>inc.src echo 10
>>inc.src echo w
>>inc.src echo q
debug inc.com < inc.src 2>nul 1>nul
del inc.src
)
:loop
inc
echo %errorlevel%
if not %errorlevel%==0 (
if %errorlevel%==81 goto :eof ::q or Q exit
if %errorlevel%==113 goto :eof
)
ping -n 2 127.1>nul
goto loop 或试一下这个,没输入时循环一直在跑.而不是等输入.
本帖主要就是用int 16h的ah=1,(也就是它与choice的主耍区别)没说清楚就毫无意义.
也许是我的表达能力不行,站内高手云云,有谁能邦我说明白?
[ Last edited by wangff on 2008-12-10 at 17:51 ]
|
|
2008-12-10 15:45 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
22 楼』:
Quote: | Originally posted by s11ss at 2008-12-10 14:55:
我的意思就是不用int 16h的1号功能,看来还是行的~
其实好像可以不写com,直接用debug调用:) |
|
不用com也行,但要有脚本 如 c.txt
a
MOV AX,0100
INT 16
MOV AX,0000
JZ 010C
INT 16
MOV AH,4C
INT 21
g
q p代码:
@echo off
:loop
debug <c.txt>nul
echo %errorlevel%
if not %errorlevel%==0 (
if %errorlevel%==81 goto :eof ::q or Q exit
if %errorlevel%==113 goto :eof
)
ping -n 2 127.1>nul
goto loop 效果一样.
[ Last edited by wangff on 2008-12-10 at 17:52 ]
|
|
2008-12-10 17:47 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
23 楼』:
只用int 16h功能ah=0的例子:
脚本: a.txt
a
mov ah,0
int 16
mov ah,4C
int 21
g
q p代码:
@echo off
:loop
debug <a.txt>nul
echo %errorlevel%
if not %errorlevel%==0 (
if %errorlevel%==81 goto :eof ::q or Q exit
if %errorlevel%==113 goto :eof
)
ping -n 2 127.1>nul
goto loop
|
|
2008-12-10 18:56 |
|
|
s11ss
银牌会员
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
|
2008-12-10 19:07 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
25 楼』:
加两行快速清除“goto :main”显示和支持中文显示(XP测试)
Quote: | ......
:main
cls
@echo off
chcp 437|graftabl 936>nul
...... |
|
此帖被 +4 点积分 点击查看详情 评分人:【 wangff 】 | 分数: +2 | 时间:2008-12-10 22:45 | 评分人:【 wxcute 】 | 分数: +2 | 时间:2008-12-12 12:44 |
|
|
|
|
2008-12-10 21:47 |
|
|
pyjhhh
初级用户
积分 54
发帖 26
注册 2007-2-10
状态 离线
|
|
2008-12-10 23:32 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
|
2008-12-11 09:19 |
|
|
wangff
初级用户
积分 134
发帖 54
注册 2008-11-19
状态 离线
|
『第
28 楼』:
自动运行:
@echo off
goto main
a
MOV AL,[005D]
CMP AL,20
JNZ 0110
MOV AH,01
INT 16
MOV AX,0000
JZ 0112
INT 16
MOV AH,4C
INT 21
g
q
:main
chcp 437|graftabl 936>nul
set/p =等待...<nul&set/a n=0
:loop
set/a n+=1
set/p =.%n%<nul
debug<"%~f0">nul
if not %errorlevel%==0 (
if %errorlevel%==81 goto :eof ::q or Q exit
if %errorlevel%==113 goto :eof
)
if %n% gtr 5 goto p1
ping -n 2 127.1>nul
goto loop
:p1
echo.
echo 计时到,自动运行!
pause
|
|
2008-12-11 10:56 |
|
|
Helloworld
新手上路
积分 9
发帖 9
注册 2008-11-29
状态 离线
|
|
2008-12-11 13:19 |
|
|
s11ss
银牌会员
积分 2098
发帖 566
注册 2007-9-11
状态 离线
|
『第
30 楼』:
告别choice,这么说好像有点牵强,choice功能还是相对强大的说:)
|
|
2008-12-11 13:23 |
|