整理:程序员的那些事(id:iProgrammer) 
雷军的代码像诗一样优雅 
↓↓↓ 
有些网友在批评中质疑,说雷军代码不会是「屎」一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。 
在 2011 年的时候,我们在微博转过雷军在 1994 年写的一段完备的汇编代码。雷军这段汇编代码,有程序员评价「如今能写出这么高质量的代码的程序员恐怕也不多」。 
后来雷军在转发我们微博时还补充说:「这个程序第一个版本是我 1989 年写的,怀念当初写程序的快乐韶光。」 
之前微博帖子中引用的链接已挂,今天重新在网上找到了完备版,如下: 
(在移动端窄屏看大篇幅代码,大概体验不如 PC 端。大家可以试试点击右上角的「……」,然后「复制链接」,方便的时候,在 PC 端看看。) 
火线高能…… 
; 
; RI.ASM Revision 2.12 [ July 12, 1994 ] 
Revision equ'V2.12 ' 
; 
; 
; 
; RAMinit Release 2.0 
; Copyright (c) 1989-1994 by Yellow Rose Software Co. 
; Written by Mr. Leijun 
; 
; Function: 
; Press HotKey to remove all TSR program after this program 
; 
; 
 
; .......................................................................... 
; Removed Softwares by RI: 
; SPDOS v6.0F, WPS v3.0F 
; Game Busters III, IV 
; NETX ( Novell 3.11 ) 
; PC-CACHE 
; Norton Cache 
; Microsoft SmartDrv 
; SideKick 1.56A 
; MOUSE Driver 
; Crazy (Monochrome simulate CGA program) 
; RAMBIOS v2.0 
; 386MAX Version6.01 
; .......................................................................... 
; No cancel softwares: 
; Windows 3.1 MSD 
; 
; No removed TSR softwares: 
; MS-DOS fastopen 
; Buffers, Files ... (QEMM 6.0) 
; QCache (386MAX 6.01) 
; .......................................................................... 
; 
COMMENT 
 
V2.04 Use mouse driver software reset function to initiation mouse 
2/17/1993 by Mr. Lei and Mr. Feng 
V2.05 RI cannot work in Windows DOS prompt 
3/9/1993 by Mr. Lei 
V2.06 1. When XMS cannot allocate 1K memory, RI halts. 
2. RI repeat deallocates EMS memory. 
V2.07 HotKey Setup Error 
4/25/1993 by Mr. Lei 
V2.08 KB Buffer 
V2.10 1. Release high memory blocks (EMM386 QEMM386 S-ICE 386MAX) 
2. RI copies flag 
V2.12 1. Exists a critical error in Init 8259 procedure 
2. Save [40:F0--FF] user data area 
 
 
 
dosseg 
.model tiny 
.code 
locals @@ 
org 100h 
 
Start: jmp Main 
org 103h 
 
True equ 1 
False equ 0 
MaxHandles equ 100h 
 
INT3 macro 
out 0ffh,al 
endm 
; 
; HotKey Status Test Var 
; --------------- --------------- 
; 
; 7 6 5 4 3 2 1 0 417 418496 
; . . x . x . . . Left Alt is pressed 82 
; x . . . x . . . Right Alt is pressed 88 
; . . . x . x . . Left Ctrl is pressed 41 
; . x . . . x . . Right Ctrl is pressed 44 
; . . . . . . x . Left Shift is pressed2 
; . . . . . . . x Right Shift is pressed1 
; 
LeftAlt equ00101000b 
RightAlt equ10001000b 
LeftCtrl equ00010100b 
RightCtrl equ01000100b 
LeftShift equ00000010b 
RightShift equ00000001b 
HotKey db LeftCtrl or RightCtrl 
 
DataBegin dw0 
NextDataSeg dw 0ffffh 
oldInt2F_addr dw 0,0 
XMS_control dw 0,0 
Handle_begin dw0 
cvtOfs dw 0 ; DOS 3.0 equ 0 and above DOS 4.0 is1 
org 104h 
db 0dh 
db Revision 
db ??date 
db26 
org 114h 
tsrLength dw0 
MachineID db 0FCh ; IBM PC/AT 
 
AuxHotKey db 0 ; 2Dh ; 'X' Scan Code 
AuxHotKeyName db'X$ ' 
Power db True 
Flag db'!' 
Kbd102 db0 
NoFlag db0 
StopFlag db1 
DosEnv dw0 
WorkSeg dw0 
PrevDataSeg dw0 
Copies db'1' 
old_8259 db 0 ; 21h port 
db 0 ; a1h port 
 
Status dw0 
XMSbit equ00000001b 
EMSbit equ00000010b 
SKbit equ10000000b 
 
GoINT1C: db 0eah 
oldInt1C_addr dw 0,0 
newINT1C: 
test cs:Status, SKbit 
jnz GoINT1C 
cmp cs:StopFlag,0 
jz @@0 
; 
; Mr. Lei 2/8/1993 
; Problem: if WPS quit and reenter, old RI cann't control keyboard. ; 
push ds 
push ax 
xor ax, ax 
mov ds, ax 
mov ax, ds:[94] 
cmp ax, offset NewInt9 
pop ax 
pop ds 
jnz GoINT1C 
mov cs:StopFlag,0 
 
@@0: push ax 
push ds 
push es 
xor ax, ax 
mov ds, ax 
mov es, ds:[94+2] 
cmp word ptr es:[101h], 'IE' ;'LEI' 
jz @@1 
cli 
mov cs:StopFlag,1 
mov ax, ds:[94] 
mov cs:oldINT9_addr2, ax 
mov ax, ds:[94+2] 
mov cs:oldINT9_addr2[2], ax 
mov ds:[94], offset newINT9_2 
mov ds:[94+2], cs 
sti 
@@1: pop es 
pop ds 
pop ax 
jmp GoINT1C 
 
; ---------------------------------------------------------------------- 
; INT2F Func 
; 
; AX = C0D7h Return RI segment in AX 
; AX = C0D8h Removes all TSR programs after RI 
; AX = C0D9h Removes all TSR programs include RI 
; AX = C0DAh Removes all RI copies 
; ---------------------------------------------------------------------- 
 
newINT2F: 
cmp ax, 0c0d7h ; LEI Hanzi GB Code 
jnz @@1 
push cs 
pop ax 
iret 
@@1: cmp ax, 0c0d7h+1 
jnz @@2 
jmp KeepSelf 
@@2: cmp ax, 0c0d7h+2 
jnz @@3 
jmp NoKeepSelf 
@@3: cmp ax, 0c0d7h+3 
jnz @@9 
mov cs:NextDataSeg,-1 
mov cs:Copies,'1' 
jmp NoKeepSelf 
@@9: jmp dword ptr cs:oldInt2F_addr 
 
 
CallInt9: 
ret 
 
 
newINT9_2: 
mov cs:NoFlag,1 
pushf 
db 9ah ; call far ptr oldint9_addr 
oldInt9_Addr2 dw 0,0 
jmp newINT9_proc 
 
newINT9: 
pushf 
db 9ah ; call far ptr oldint9_addr 
oldInt9_Addr dw 0, 0 cmp cs:NoFlag,0 
jz newINT9_proc 
mov cs:NoFlag,0 
iret 
newINT9_proc: 
cmp cs:Flag, '!' ; busy ? 
jnz @@0 
iret 
@@0: 
mov cs:Flag, '!' ; set busy flag 
push ax ; cmp hot key 
push bx 
push es 
mov ax,40h 
mov es,ax 
 
cmp cs:AuxHotKey,0 
jz @@_1 
mov bx, es:[1ah] 
cmp bx, es:[1ch] 
jz @@10 
push bx 
mov bl, es:[bx+1] 
cmp bl, cs:AuxHotKey 
pop bx 
jnz @@10 
@@_1: 
mov ah,es:[17h] ; test CTRL SHIFT ALT 
mov al,cs:HotKey 
push ax 
and ax,0f0fh 
cmp al,ah 
pop ax 
jnz @@10 cmp cs:Kbd102, True 
jnz @@1 
shr al,1 
shr al,1 
shr al,1 
shr al,1 
push ax 
mov ah, es:[18h] 
and ax, 303h 
cmp al, ah 
pop ax 
jnz @@10 
mov ah, es:[96h] 
shr ax,1 
shr ax,1 
and ax, 303h 
cmp al, ah 
jnz @@10 cmp cs:AuxHotKey,0 
jz @@_3 
inc bx 
inc bx 
cmp bx, 3eh 
jb @@_2 
mov bx, 1eh 
@@_2: 
mov es:[1ah], bx 
@@_3: 
call IsWinDos 
or ax, ax 
jz @@1 
call Beep 
@@10: 
sti 
pop es 
pop bx 
pop ax 
mov cs:Flag, ' ' ; no busy 
iret 
@@1: ; OK 
pop es 
pop bx 
pop ax 
 
KeepSelf: 
call RemoveTSR 
push es 
mov es,cs:WorkSeg 
mov dx,es:tsrLength 
mov di,dx 
mov al,0h ; Aug 24,1993 
mov cx,100h 
rep stosb 
pop es 
int 27h 
 
NoKeepSelf: 
mov ax,0e07h 
int 10h 
mov cs:clsStr, 47h ; Color (White in Red) 
call RemoveTSR 
dec cs:Copies 
call RestoreSelfIntVec 
push es 
cmp cs:PrevDataSeg,0 
jz @@1 
mov es, cs:PrevDataSeg 
mov es:NextDataSeg,-1 
@@1: pop es 
mov ax, 4c00h 
int 21h 
 
; --------------------------------------------------------------------------- 
 
IsWinDOS: 
mov ax, 1600h 
int 2fh 
cmp al, 01h 
jz @@9 cmp al, 0ffh 
jz @@9 ; Windows/386 Version 2.X 
cmp al, 00h 
jz @@1 cmp al, 80h 
jnz @@9 ; Windows 3 in enhanced mode 
; Version number in AL/AH 
@@1: 
mov ax, 4680h 
int 2fh 
cmp al, 80h 
jnz @@9 
xor ax, ax 
jmp @@10 
@@9: mov ax,1 
@@10: ret 
 
; ----------------------------------------------------------------------- 
RestoreSelfIntVec: 
cmp Copies,'0' 
jz @@0 
ret 
@@0: 
cli 
push cs 
pop ds 
xor ax, ax 
mov es, ax 
mov si, offset oldInt9_Addr 
mov di,94 
movsw 
movsw 
mov si, offset oldInt2F_Addr 
mov di, 2Fh4 
movsw 
movsw 
mov si, offset oldInt1C_Addr 
mov di, 1Ch4 
movsw 
movsw 
sti 
ret 
 
; ------------- KERNEL PROGRAM ---------------------------------------------- 
RemoveTSR: 
pop ax 
cli ; Setstack 
mov sp, cs 
mov ss, sp 
mov sp, 100h 
sti 
push ax 
 
cmp cs:Power, True 
jnz @@1 
call Init8259 
@@1: 
push cs 
pop ds 
@@_0: 
mov ax,ds:NextDataSeg 
cmp ax,-1 
jz @@_1 
mov cs:PrevDataSeg, ds 
mov ds, ax 
jmp @@_0 
@@_1: mov si,ds:DataBegin 
mov cs:WorkSeg, ds 
lodsw 
cmp ax,'XX' 
jz @@_2 
call Beep 
ret 
@@_2: 
call RestoreEnvStr 
call RestoreMCB ; restore current mcb 
call CloseFiles 
call RestorePort 
call RestoreLEDs 
call RestoreVecList ; Restore vectorslist 
call RestoreFloppyParam 
cmp cs:Power, True 
jnz @@2 
call RestoreCVTchain ; Restore cvt chain 
call RestoreMemoryManager 
@@2: 
call RestoreBiosData 
call Enable8259 
mov ah, 1 int 16h 
 
call RestoreClockSpeed 
call CloseSpeaker 
call ResetDisk 
call UpdateTime 
 
call ClosePRN 
mov bx,cs:WorkSeg 
mov ah,50h 
int 21h ; Set PSP segment 
mov ax,3 int 10h ; Set display mode 
 
call InitPRN 
call InitMouse 
mov al, cs:Copies 
cmp al,'1' 
ja @@_sh1 
mov cs:ShowCopies, '' 
jmp @@_sh2 
@@_sh1: mov cs:ShowCopies, al 
@@_sh2: 
mov si, offset clsStr 
call ColorPrintStr 
mov cs:Flag, ' ' ; no busy 
cmp Copies, '1' 
jnz @@_end 
mov cs:StopFlag,0 
@@_end: 
call ClearKB_buffer 
ret 
 
Beep: 
mov ax,0e07h 
int 10h 
ret 
 
; ######################################################################### 
 
ClearKB_Buffer: 
push es 
push bx 
mov bx, 0040h 
mov es, bx 
cli 
mov bx, es:[1ah] 
mov es:[1ch], bx 
sti 
pop bx 
pop es 
ret 
 
 
Init8259: 
; cmp cs:Copies,'1' 
; jz @@1 
; ret 
@@1: 
cmp cs:MachineID, 0fch 
ja @@pc_xt 
@@AT: 
mov bx,870h ; 
mov al,0 ; 
out 0F1h,al ; 
jcxz $+2 
jcxz $+2 
mov al,11h ; ICW1 
out 0A0h,al 
jcxz $+2 
jcxz $+2 
out 20h,al 
jcxz $+2 
jcxz $+2 
mov al,bl ; ICW2 
out 0A1h,al 
jcxz $+2 
jcxz $+2 
mov al,bh 
out 21h,al 
jcxz $+2 
jcxz $+2 
mov al,2 ; ICW3 
out 0A1h,al 
jcxz $+2 
jcxz $+2 
mov al,4 
out 21h,al 
jcxz $+2 
jcxz $+2 
mov al,1 ; ICW4 
out 0A1h,al 
jcxz $+2 
jcxz $+2 
out 21h,al 
jcxz $+2 
jcxz $+2 
mov al,0FFh ; OCW1 
out 0A1h,al 
jcxz $+2 
jcxz $+2 
out 21h,al 
ret 
@@PC_XT: 
mov al,13h ; ICW1 
out 20h,al 
jcxz $+2 
jcxz $+2 
mov al,8 ; ICW2 
out 21h,al 
jcxz $+2 
jcxz $+2 
mov al,9 ; ICW4 
out 21h,al 
jcxz $+2 
jcxz $+2 
mov al,0FFh ; OCW1 
out 21h,al 
ret 
 
Enable8259: 
mov ax, word ptr cs:old_8259 
out 021h,al 
jcxz $+2 
jcxz $+2 
mov al,ah 
out 0a1h,al ; DEC PC Bus Mouse 
ret ; July 1994 by Mr. Lei 
 
; ------------------------------------------------------------------------- 
 
RestoreBiosData: 
lodsw 
cmp ax,'--' 
jz @@1 
call Beep 
ret 
@@1: push es 
push di 
mov di, 40h 
mov es, di 
 
mov di, 10h 
movsw 
mov di, 0a8h ; [40h:a8h] 
movsw 
movsw 
mov di, 49h 
mov cx, 1dh 
rep movsb 
 
mov di, 0f0h ; User data 
mov cx,8 
rep movsw 
 
pop di 
pop es 
ret 
 
; ------------------------------------------------------------------------- 
 
RestoreMCB: 
push ds 
push es 
lodsw ;'MZ' 
@@0: lodsw 
cmp ax,'MM' 
jz @@1 
mov es,ax 
xor di,di 
movsb 
movsw 
movsw 
inc ax 
mov bx, ds 
cmp ax, bx 
jz @@10 
mov byte ptr es:[8], 0 ; Aug 24,1993 
@@10: cmp byte ptr es:[0],'Z' 
jnz @@0 
mov byte ptr es:[10h],0 
jmp @@0 
@@1: 
pop es 
pop ds 
ret 
 
; ------------------------------------------------------------------------- 
CloseFiles: 
mov ax, 5 ; Begin handle 
push ds 
push si 
mov cx, 15 ; Max handle 
sub cx, ax 
inc cx 
mov bx, ax 
@@1: push bx 
push cx 
mov ah, 3eh 
int 21h 
pop cx 
pop bx 
inc bx 
loop @@1 
pop si 
pop ds 
ret 
 
; ------------------------------------------------------------------------- 
RestorePort: 
mov di, 40h ; restore port 
mov es, di 
xor di, di 
mov cx,8 
rep movsw 
ret 
 
; ------------------------------------------------------------------------- 
RestoreLEDs: 
lodsb 
and al, 11110000b ; LED status 
mov ah, es:[17h] 
and ah,00001111b 
or ah, al 
and ah, 0f0h ; Clear CTRL ALT SHIFT 
mov es:[17h], ah 
ret 
 
; ------------------------------------------------------------------------- 
RestoreEnvStr: 
lodsw 
push si 
push di 
push ds 
push es 
mov es, cs:DosEnv 
mov ds, ax 
xor si, si 
mov di, si 
@@0: lodsb 
or al, al 
jnz @@1 cmp byte ptr ds:[si],0 
jz @@2 
@@1: stosb 
jmp @@0 
@@2: stosb 
stosb 
pop es 
pop ds 
pop di 
pop si 
ret 
 
; ----------------------------------------------------------------------- 
RestoreVecList: 
xor ax,ax 
mov di,ax 
mov es,ax 
mov cx,100h 
@@0: lodsw 
xchg dx, ax 
lodsw 
cmp dx,'EL' 
jnz @@1 cmp al,'I' 
jnz @@1 
sub cl, ah 
push cx 
mov cl, ah 
mov ax, es:[di-4] 
mov dx, es:[di-2] 
@@a: stosw 
xchg ax, dx 
stosw 
xchg ax, dx 
loop @@a 
pop cx 
or cx, cx 
jz @@9 
jmp @@0 
@@1: 
xchg ax, dx 
stosw 
xchg ax, dx 
stosw 
loop @@0 
@@9: 
ret 
 
;---------------------------------------------------------------------------- 
RestoreFloppyParam: ; Mr. Lei 2/10/1992 
push es 
push ax 
xor ax, ax 
mov es, ax 
mov byte ptr es:[525h],2 
pop ax 
pop es 
ret 
 
;--------------------------------------------------------------------------- 
RestoreCVTchain: 
lodsw 
cmp ax,'VC' 
jz @@_0 
call Beep 
ret 
@@_0: 
push ax 
push cx 
push es 
 
; ----------------------------------------------------------------- 
lodsw ; DPB 
mov di, ax 
lodsw 
mov es, ax 
@@1: lodsb 
inc di 
stosb 
add di, cs:cvtOfs 
add di, 10h 
movsw 
movsw 
les di, es:[di+2] 
cmp di,-1 
jnz @@1 
 
; ----------------------------------------------------------------- 
lodsw ; DCB 
mov di, ax 
lodsw 
mov es, ax 
xor ax, ax 
dec ax 
stosw 
 
; ----------------------------------------------------------------- 
lodsw ; Device Driver Chain 
mov di, ax 
lodsw 
mov es, ax 
xor cx, cx 
@@9: push di 
mov cl,5 
rep movsw 
pop di 
les di, es:[di] 
mov ax, di 
inc ax 
jnz @@9 
pop es 
pop cx 
pop ax 
ret 
 
; ---------------------------------------------------------------------------- 
RestoreMemoryManager: 
test cs:Status, XMSbit 
jz @@1 
call LoadXMSstatus 
@@1: 
test cs:Status, EMSbit 
jz @@2 
call LoadEMSstatus 
@@2: 
ret 
 
 
LoadEMSstatus: 
lodsw 
cmp ax,'ME' 
jz @@_0 
call Beep 
ret 
@@_0: 
lodsw 
mov cx, ax 
xor dx, dx 
@@_1: push ds 
push si 
push dx 
push cx 
 
@@0: cmp dx, ds:[si] 
jz @@1 
add si,4 
loop @@0 
 
push cx 
mov cx,5 
@@0: mov ah, 45h ; Deallocate Handle and Memory 
int 67h 
or ah, ah 
jz @@1 
loop @@0 
@@1: pop cx 
 
@@1: 
pop cx 
pop dx 
pop si 
pop ds 
inc dx 
cmp dx, 100h 
jb @@_1 
shl cx,1 
shl cx,1 
add si, cx 
ret 
 
 
LoadXMSstatus: 
lodsw 
cmp ax,'MX' 
jz @@_0 
call Beep 
ret 
@@_0: 
lodsw 
mov cx, ax 
jcxz @@5 
@@1: 
lodsw 
mov dx, ax 
@@2: push dx 
mov ah, 0ah ;free 
call dword ptr cs:xms_control 
or ax, ax 
pop dx 
jnz @@4 cmp bl, 0abh 
jnz @@4 
push dx 
mov ah, 0dh ; unlock 
call dword ptr cs:xms_control 
or ax, ax 
pop dx 
jmp @@2 
@@4: loop @@1 
@@5: ret 
endp 
 
; ----------------------------------------------------------------------- 
CloseSpeaker: 
in al, 61h 
and al, 0fch 
out 61h, al 
ret 
 
; ----------------------------------------------------------------------- 
RestoreClockSpeed: 
mov al,00110110b 
out 43h, al 
xor ax, ax 
out 40h, al 
out 40h, al 
ret 
 
; ----------------------------------------------------------------------- 
ResetDisk: 
xor ax, ax 
xor dx, dx 
int 13h ; Restore A 
inc dx 
int 13h ; Restore B 
mov dl, 80h 
int 13h ; Restore C 
ret 
 
 
 
; -------------------------------------------------------------------------- 
ClosePRN: 
mov ah, 51h ; Get PSP seg 
int 21h 
mov es, bx 
mov ax, es:[16h] ; Prev PSP seg 
cmp ax, bx 
jnz @@9 
mov ax, 3e00h ; COMMAND 
mov bx, 4 int 21h 
@@9: 
ret 
 
InitPRN: 
mov ax, 3e00h 
mov bx, 4 ; PRN 
int 21h 
mov ax, 3d01h 
mov dx, offset PRNname 
push cs 
pop ds 
int 21h 
ret 
PRNname db 'PRN',0 
 
InitMouse: ; 2/16/1993 by Mr. Lei 
push es 
xor ax, ax 
mov es, ax 
cmp word ptr es:[33h4+2],0 
jz @@0 cmp word ptr es:[33h4],0 
jz @@0 
mov ax, 21h 
int 33h ; Hook Mouse Interrupt 
@@0: pop es 
ret 
 
; ------------- CMOS CLOCK set to System ----------------------------------- 
UpdateTime: 
call GetRealTime 
mov ah, 2dh 
int 21h 
ret 
 
GetRealTime: 
mov ah,2 int 1Ah 
mov al,ch 
call bcdxchg 
mov ch,al 
mov al,cl 
call bcdxchg 
mov cl,al 
mov al,dh 
call bcdxchg 
mov dh,al 
mov dl,0 
ret 
 
BCDxchg: 
push ax 
push cx 
mov cl,4 
shr al,cl 
pop cx 
mov bl,0Ah 
mul bl 
pop bx 
and bl,0Fh 
add al,bl 
ret 
 
; ----------------------------------------------------------------------- 
; Displaystring 
ColorPrintStr: 
lodsb 
mov bh, al ; color 
xor cx, cx 
mov dx, 014fh 
mov ax, 0600h 
int 10h 
 
mov ah, 02 ; GotoXY (0, 0) 
xor dx, dx 
mov bh, 0 int 10h 
PrintStr: 
push cs 
pop ds 
xor bx, bx 
@@1: lodsb 
cmp al,'$' 
jz @@2 
or al, al 
jz @@2 
mov ah, 0eh 
int 10h 
jmp short @@1 
@@2: mov al, cs:clsStrcolor 
mov cs:clsStr, al 
ret 
 
; ----------------------------------------------------------------------- 
Self dw0 
clsStrcolor db 17h 
clsStr db 17h ; Color (White in Blue) 
db' RAMinit Version 2.12 (c) 1989-1994 by KingSoft Ltd. Mr. Leijun' 
db 0dh,0ah 
db' [' 
ShowCopies db '' 
db '] Activate...',0ah,0dh,'$' 
 
endTSR equ $ 
mcbList equ offset endTSR + 2 +2 
vecList equ mcbList + 710 + 2 + 10h + 1 + 400h 
devLink equ vecList + 4 + 5 26 + 4 + 10 30h +4 
xmsList equ devLink + 2 + MaxHandles2 
emsList equ xmsList + 4 +1024 
crtMode equ emsList + 2 + 1Dh + 4 + 10h 
tsrLen equ crtMode +1 
; 
; DOS Environment Reserved by RI 
; -------------------------------------------------- 
; Flag 'XX' 2 bytes 
; Environment Segment 1 word 
; Free MCBs |