雷军1994年写的老代码曝光,被称像诗一样优雅(附完整代码)
整理:程序员的那些事(id:iProgrammer)
雷军的代码像诗一样优雅
↓↓↓
在2011年的时候,我们在微博转过雷军在1994年写的一段完整的汇编代码。雷军这段汇编代码,有程序员评价「如今能写出这么高质量的代码的程序员恐怕也不多」。
后来雷军在转发我们微博时还补充说:「这个程序第一个版本是我1989年写的,怀念当初写程序的快乐时光。」
之前微博帖子中引用的链接已挂,今天重新在网上找到了完整版,如下:
前方高能……
;
;[July12,1994]
Revisionequ''
;
;
;
;
;Copyright(c)1989-1994byYellowRoseSoftwareCo.
;
;
;Function:
;PressHotKeytoremoveallTSRprogramafterthisprogram
;
;
;..
;RemovedSoftwaresbyRI:
;,
;GameBustersIII,IV
;NETX()
;PC-CACHE
;NortonCache
;MicrosoftSmartDrv
;
;MOUSEDriver
;Crazy(MonochromesimulateCGAprogram)
;
;386
;..
;Nocancelsoftwares:
;
;
;NoremovedTSRsoftwares:
;MS-DOSfastopen
;Buffers,Files()
;QCache(386)
;..
;
COMMENT
2/17/1993
3/9/1993
,RIhalts.
2.RIrepeatdeallocatesEMSmemory.
4/25/1993
(EMM386QEMM386S-ICE386MAX)
2.RIcopiesflag
2.Save[40:F0--FF]userdataarea
dosseg
.modeltiny
.code
locals@@
org100h
Start:jmpMain
org103h
Trueequ1
Falseequ0
MaxHandlesequ100h
INT3macro
out0ffh,al
m
;
;HotKeyStatusTestVar
;------------------------------
;
;76543210417418496
;..
;xxRightAltispressed88
;.LeftCtrlispressed41
;.xx..RightCtrlispressed44
;
;.xRightShiftispressed1
;
LeftAltequ00101000b
RightAltequ10001000b
LeftCtrlequ00010100b
RightCtrlequ01000100b
LeftShiftequ00000010b
RightShiftequ00000001b
HotKeydbLeftCtrlorRightCtrl
DataBegindw0
NextDataSegdw0ffffh
oldInt2F_addrdw0,0
XMS_controldw0,0
Handle_begindw0
cvtOfsdw0;
org104h
db0dh
dbRevision
db??date
db26
org114h
tsrLengthdw0
MachineIDdb0FCh;IBMPC/AT
AuxHotKeydb0;2Dh;'X'ScanCode
AuxHotKeyNamedb'X$'
PowerdbTrue
Flagdb'!'
Kbd102db0
NoFlagdb0
StopFlagdb1
DosEnvdw0
WorkSegdw0
PrevDataSegdw0
Copiesdb'1'
old_8259db0;21hport
db0;a1hport
Statusdw0
XMSbitequ00000001b
EMSbitequ00000010b
SKbitequ10000000b
GoINT1C:db0eah
oldInt1C_addrdw0,0
newINT1C:
testcs:Status,SKbit
jnzGoINT1C
cmpcs:StopFlag,0
jz@@0
;
;/8/1993
;Problem:ifWPSquitandreenter,oldRIcann'tcontrolkeyboard.;
pushds
pushax
xorax,ax
movds,ax
movax,ds:[94]
cmpax,offsetNewInt9
popax
popds
jnzGoINT1C
movcs:StopFlag,0
@@0:pushax
pushds
pushes
xorax,ax
movds,ax
moves,ds:[94+2]
cmpwordptres:[101h],'IE';'LEI'
jz@@1
cli
movcs:StopFlag,1
movax,ds:[94]
movcs:oldINT9_addr2,ax
movax,ds:[94+2]
movcs:oldINT9_addr2[2],ax
movds:[94],offsetnewINT9_2
movds:[94+2],cs
sti
@@1:popes
popds
popax
jmpGoINT1C
;----------------------------------------------------------------------
;INT2FFunc
;
;AX=C0D7hReturnRIsegmentinAX
;AX=C0D8hRemovesallTSRprogramsafterRI
;AX=C0D9hRemovesallTSRprogramsincludeRI
;AX=C0DAhRemovesallRIcopies
;----------------------------------------------------------------------
newINT2F:
cmpax,0c0d7h;LEIHanziGBCode
jnz@@1
pushcs
popax
iret
@@1:cmpax,0c0d7h+1
jnz@@2
jmpKeepSelf
@@2:cmpax,0c0d7h+2
jnz@@3
jmpNoKeepSelf
@@3:cmpax,0c0d7h+3
jnz@@9
movcs:NextDataSeg,-1
movcs:Copies,'1'
jmpNoKeepSelf
@@9:jmpdwordptrcs:oldInt2F_addr
CallInt9:
ret
newINT9_2:
movcs:NoFlag,1
pushf
db9ah;callfarptroldint9_addr
oldInt9_Addr2dw0,0
jmpnewINT9_proc
newINT9:
pushf
db9ah;callfarptroldint9_addr
oldInt9_Addrdw0,0cmpcs:NoFlag,0
jznewINT9_proc
movcs:NoFlag,0
iret
newINT9_proc:
cmpcs:Flag,'!';busy?
jnz@@0
iret
@@0:
movcs:Flag,'!';setbusyflag
pushax;cmphotkey
pushbx
pushes
movax,40h
moves,ax
cmpcs:AuxHotKey,0
jz@@_1
movbx,es:[1ah]
cmpbx,es:[1ch]
jz@@10
pushbx
movbl,es:[bx+1]
cmpbl,cs:AuxHotKey
popbx
jnz@@10
@@_1:
movah,es:[17h];testCTRLSHIFTALT
moval,cs:HotKey
pushax
andax,0f0fh
cmpal,ah
popax
jnz@@10cmpcs:Kbd102,True
jnz@@1
shral,1
shral,1
shral,1
shral,1
pushax
movah,es:[18h]
andax,303h
cmpal,ah
popax
jnz@@10
movah,es:[96h]
shrax,1
shrax,1
andax,303h
cmpal,ah
jnz@@10cmpcs:AuxHotKey,0
jz@@_3
incbx
incbx
cmpbx,3eh
jb@@_2
movbx,1eh
@@_2:
moves:[1ah],bx
@@_3:
callIsWinDos
orax,ax
jz@@1
callBeep
@@10:
sti
popes
popbx
popax
movcs:Flag,'';nobusy
iret
@@1:;OK
popes
popbx
popax
KeepSelf:
callRemoveTSR
pushes
moves,cs:WorkSeg
movdx,es:tsrLength
movdi,dx
moval,0h;Aug24,1993
movcx,100h
repstosb
popes
int27h
NoKeepSelf:
movax,0e07h
int10h
movcs:clsStr,47h;Color(WhiteinRed)
callRemoveTSR
deccs:Copies
callRestoreSelfIntVec
pushes
cmpcs:PrevDataSeg,0
jz@@1
moves,cs:PrevDataSeg
moves:NextDataSeg,-1
@@1:popes
movax,4c00h
int21h
;---------------------------------------------------------------------------
IsWinDOS:
movax,1600h
int2fh
cmpal,01h
jz@@9cmpal,0ffh
jz@@9;Windows/386
cmpal,00h
jz@@1cmpal,80h
jnz@@9;Windows3inenhancedmode
;VersionnumberinAL/AH
@@1:
movax,4680h
int2fh
cmpal,80h
jnz@@9
xorax,ax
jmp@@10
@@9:movax,1
@@10:ret
;-----------------------------------------------------------------------
RestoreSelfIntVec:
cmpCopies,'0'
jz@@0
ret
@@0:
cli
pushcs
popds
xorax,ax
moves,ax
movsi,offsetoldInt9_Addr
movdi,94
movsw
movsw
movsi,offsetoldInt2F_Addr
movdi,2Fh4
movsw
movsw
movsi,offsetoldInt1C_Addr
movdi,1Ch4
movsw
movsw
sti
ret
;-------------KERNELPROGRAM----------------------------------------------
RemoveTSR:
popax
cli;Setstack
movsp,cs
movss,sp
movsp,100h
sti
pushax
cmpcs:Power,True
jnz@@1
callInit8259
@@1:
pushcs
popds
@@_0:
movax,ds:NextDataSeg
cmpax,-1
jz@@_1
movcs:PrevDataSeg,ds
movds,ax
jmp@@_0
@@_1:movsi,ds:DataBegin
movcs:WorkSeg,ds
lodsw
cmpax,'XX'
jz@@_2
callBeep
ret
@@_2:
callRestoreEnvStr
callRestoreMCB;restorecurrentmcb
callCloseFiles
callRestorePort
callRestoreLEDs
callRestoreVecList;Restorevectorslist
callRestoreFloppyParam
cmpcs:Power,True
jnz@@2
callRestoreCVTchain;Restorecvtchain
callRestoreMemoryManager
@@2:
callRestoreBiosData
callEnable8259
movah,1int16h
callRestoreClockSpeed
callCloseSpeaker
callResetDisk
callUpdateTime
callClosePRN
movbx,cs:WorkSeg
movah,50h
int21h;SetPSPsegment
movax,3int10h;Setdisplaymode
callInitPRN
callInitMouse
moval,cs:Copies
cmpal,'1'
ja@@_sh1
movcs:ShowCopies,''
jmp@@_sh2
@@_sh1:movcs:ShowCopies,al
@@_sh2:
movsi,offsetclsStr
callColorPrintStr
movcs:Flag,'';nobusy
cmpCopies,'1'
jnz@@_
movcs:StopFlag,0
@@_:
callClearKB_buffer
ret
Beep:
movax,0e07h
int10h
ret
;#
ClearKB_Buffer:
pushes
pushbx
movbx,0040h
moves,bx
cli
movbx,es:[1ah]
moves:[1ch],bx
sti
popbx
popes
ret
Init8259:
;cmpcs:Copies,'1'
;jz@@1
;ret
@@1:
cmpcs:MachineID,0fch
ja@@pc_xt
@@AT:
movbx,870h;
moval,0;
out0F1h,al;
jcxz$+2
jcxz$+2
moval,11h;ICW1
out0A0h,al
jcxz$+2
jcxz$+2
out20h,al
jcxz$+2
jcxz$+2
moval,bl;ICW2
out0A1h,al
jcxz$+2
jcxz$+2
moval,bh
out21h,al
jcxz$+2
jcxz$+2
moval,2;ICW3
out0A1h,al
jcxz$+2
jcxz$+2
moval,4
out21h,al
jcxz$+2
jcxz$+2
moval,1;ICW4
out0A1h,al
jcxz$+2
jcxz$+2
out21h,al
jcxz$+2
jcxz$+2
moval,0FFh;OCW1
out0A1h,al
jcxz$+2
jcxz$+2
out21h,al
ret
@@PC_XT:
moval,13h;ICW1
out20h,al
jcxz$+2
jcxz$+2
moval,8;ICW2
out21h,al
jcxz$+2
jcxz$+2
moval,9;ICW4
out21h,al
jcxz$+2
jcxz$+2
moval,0FFh;OCW1
out21h,al
ret
Enable8259:
movax,wordptrcs:old_8259
out021h,al
jcxz$+2
jcxz$+2
moval,ah
out0a1h,al;DECPCBusMouse
ret;
;-------------------------------------------------------------------------
RestoreBiosData:
lodsw
cmpax,'--'
jz@@1
callBeep
ret
@@1:pushes
pushdi
movdi,40h
moves,di
movdi,10h
movsw
movdi,0a8h;[40h:a8h]
movsw
movsw
movdi,49h
movcx,1dh
repmovsb
movdi,0f0h;Userdata
movcx,8
repmovsw
popdi
popes
ret
;-------------------------------------------------------------------------
RestoreMCB:
pushds
pushes
lodsw;'MZ'
@@0:lodsw
cmpax,'MM'
jz@@1
moves,ax
xordi,di
movsb
movsw
movsw
incax
movbx,ds
cmpax,bx
jz@@10
movbyteptres:[8],0;Aug24,1993
@@10:cmpbyteptres:[0],'Z'
jnz@@0
movbyteptres:[10h],0
jmp@@0
@@1:
popes
popds
ret
;-------------------------------------------------------------------------
CloseFiles:
movax,5;Beginhandle
pushds
pushsi
movcx,15;Maxhandle
subcx,ax
inccx
movbx,ax
@@1:pushbx
pushcx
movah,3eh
int21h
popcx
popbx
incbx
loop@@1
popsi
popds
ret
;-------------------------------------------------------------------------
RestorePort:
movdi,40h;restoreport
moves,di
xordi,di
movcx,8
repmovsw
ret
;-------------------------------------------------------------------------
RestoreLEDs:
lodsb
andal,11110000b;LEDstatus
movah,es:[17h]
andah,00001111b
orah,al
andah,0f0h;ClearCTRLALTSHIFT
moves:[17h],ah
ret
;-------------------------------------------------------------------------
RestoreEnvStr:
lodsw
pushsi
pushdi
pushds
pushes
moves,cs:DosEnv
movds,ax
xorsi,si
movdi,si
@@0:lodsb
oral,al
jnz@@1cmpbyteptrds:[si],0
jz@@2
@@1:stosb
jmp@@0
@@2:stosb
stosb
popes
popds
popdi
popsi
ret
;-----------------------------------------------------------------------
RestoreVecList:
xorax,ax
movdi,ax
moves,ax
movcx,100h
@@0:lodsw
xchgdx,ax
lodsw
cmpdx,'EL'
jnz@@1cmpal,'I'
jnz@@1
subcl,ah
pushcx
movcl,ah
movax,es:[di-4]
movdx,es:[di-2]
@@a:stosw
xchgax,dx
stosw
xchgax,dx
loop@@a
popcx
orcx,cx
jz@@9
jmp@@0
@@1:
xchgax,dx
stosw
xchgax,dx
stosw
loop@@0
@@9:
ret
;----------------------------------------------------------------------------
RestoreFloppyParam:;/10/1992
pushes
pushax
xorax,ax
moves,ax
movbyteptres:[525h],2
popax
popes
ret
;---------------------------------------------------------------------------
RestoreCVTchain:
lodsw
cmpax,'VC'
jz@@_0
callBeep
ret
@@_0:
pushax
pushcx
pushes
;-----------------------------------------------------------------
lodsw;DPB
movdi,ax
lodsw
moves,ax
@@1:lodsb
incdi
stosb
adddi,cs:cvtOfs
adddi,10h
movsw
movsw
lesdi,es:[di+2]
cmpdi,-1
jnz@@1
;-----------------------------------------------------------------
lodsw;DCB
movdi,ax
lodsw
moves,ax
xorax,ax
decax
stosw
;-----------------------------------------------------------------
lodsw;DeviceDriverChain
movdi,ax
lodsw
moves,ax
xorcx,cx
@@9:pushdi
movcl,5
repmovsw
popdi
lesdi,es:[di]
movax,di
incax
jnz@@9
popes
popcx
popax
ret
;----------------------------------------------------------------------------
RestoreMemoryManager:
testcs:Status,XMSbit
jz@@1
callLoadXMSstatus
@@1:
testcs:Status,EMSbit
jz@@2
callLoadEMSstatus
@@2:
ret
LoadEMSstatus:
lodsw
cmpax,'ME'
jz@@_0
callBeep
ret
@@_0:
lodsw
movcx,ax
xordx,dx
@@_1:pushds
pushsi
pushdx
pushcx
@@0:cmpdx,ds:[si]
jz@@1
addsi,4
loop@@0
pushcx
movcx,5
@@0:movah,45h;DeallocateHandleandMemory
int67h
orah,ah
jz@@1
loop@@0
@@1:popcx
@@1:
popcx
popdx
popsi
popds
incdx
cmpdx,100h
jb@@_1
shlcx,1
shlcx,1
addsi,cx
ret
LoadXMSstatus:
lodsw
cmpax,'MX'
jz@@_0
callBeep
ret
@@_0:
lodsw
movcx,ax
jcxz@@5
@@1:
lodsw
movdx,ax
@@2:pushdx
movah,0ah;free
calldwordptrcs:xms_control
orax,ax
popdx
jnz@@4cmpbl,0abh
jnz@@4
pushdx
movah,0dh;unlock
calldwordptrcs:xms_control
orax,ax
popdx
jmp@@2
@@4:loop@@1
@@5:ret
p
;-----------------------------------------------------------------------
CloseSpeaker:
inal,61h
andal,0fch
out61h,al
ret
;-----------------------------------------------------------------------
RestoreClockSpeed:
moval,00110110b
out43h,al
xorax,ax
out40h,al
out40h,al
ret
;-----------------------------------------------------------------------
ResetDisk:
xorax,ax
xordx,dx
int13h;RestoreA
incdx
int13h;RestoreB
movdl,80h
int13h;RestoreC
ret
;--------------------------------------------------------------------------
ClosePRN:
movah,51h;GetPSPseg
int21h
moves,bx
movax,es:[16h];PrevPSPseg
cmpax,bx
jnz@@9
movax,3e00h;COMMAND
movbx,4int21h
@@9:
ret
InitPRN:
movax,3e00h
movbx,4;PRN
int21h
movax,3d01h
movdx,offsetPRNname
pushcs
popds
int21h
ret
PRNnamedb'PRN',0
InitMouse:;2/16/1993
pushes
xorax,ax
moves,ax
cmpwordptres:[33h4+2],0
jz@@0cmpwordptres:[33h4],0
jz@@0
movax,21h
int33h;HookMouseInterrupt
@@0:popes
ret
;-------------CMOSCLOCKsettoSystem-----------------------------------
UpdateTime:
callGetRealTime
movah,2dh
int21h
ret
GetRealTime:
movah,2int1Ah
moval,ch
callbcdxchg
movch,al
moval,cl
callbcdxchg
movcl,al
moval,dh
callbcdxchg
movdh,al
movdl,0
ret
BCDxchg:
pushax
pushcx
movcl,4
shral,cl
popcx
movbl,0Ah
mulbl
popbx
andbl,0Fh
addal,bl
ret
;-----------------------------------------------------------------------
;Displaystring
ColorPrintStr:
lodsb
movbh,al;color
xorcx,cx
movdx,014fh
movax,0600h
int10h
movah,02;GotoXY(0,0)
xordx,dx
movbh,0int10h
PrintStr:
pushcs
popds
xorbx,bx
@@1:lodsb
cmpal,'$'
jz@@2
oral,al
jz@@2
movah,0eh
int10h
jmpshort@@1
@@2:moval,cs:clsStrcolor
movcs:clsStr,al
ret
;-----------------------------------------------------------------------
Selfdw0
clsStrcolordb17h
clsStrdb17h;Color(WhiteinBlue)
db'(c)1989-1994'
db0dh,0ah
db'['
ShowCopiesdb''
db']Activate',0ah,0dh,'
推荐阅读
-
新手司机需要了解的油盖小知识
新手司机在爱车该加油时常常会发出几个疑问:油盖的方向是在哪边、开启的按键在哪里等等。今天我们就来聊聊关于油箱口的那些事。一、如何快速辨别油盖方向?因为加油效率以及管线长度成本等考虑,油箱盖的安装位置通常都会偏向于油箱的一侧,所以自然连着油箱的油箱盖会有左有右了。车油箱盖的左右本质上还是车企的设计思路...
-
磁珠的主要功能是什么?
磁珠专用于抑制信号线、电源线上的高频噪声和尖峰干扰,还具有吸收静电脉冲的能力。磁珠有很高的电阻率和磁导率,它等效于电阻和电感串联,但电阻值和电感值都随频率变化。它比普通的电感有更好的高频滤波特性,在高频时呈现阻性,所以能在相当宽的频率范围内保持较高的阻抗,从而提高调频滤波效果。作为电源滤波,可以使用...
-
解释开关电源各种波形的由来
1单管反激电路基本结构2两种模式DCM和CCM1)CCM和DCM模式判断依据CCM和DCM的判断,不是按照初级电流是否连续来判断的。而是根据初、次级的电流合成来判断的。只要初、次级电流不同是为零,就是CCM模式。而如果存在初、次级电流同时为零的状态,就是DCM模式。介于二者之间的就是BCM模式。2)...
-
同济大学医学院与华中科技大学同济医学院
同济大学和华中科技大学,都是我国著名985高校,世界一流大学建设高校,二所高校一个位于国际大都市上海,一个位于美丽的城市武汉。二所高校,都是学霸级别考生才能考上,今天为啥要说这二所高校那,其实要是懂中国大学改革史的,都会明白怎么回事,现在的同济大学与现在的华中科技大学有着那么一丝关系。大家可能从名字...