📄 newmac.inc
字号:
.NOLIST
;STANDARD EQUATES:
TRUE EQU 0FFFFH ;TRUE
FALSE EQU 0 ;FALSE
BLINK EQU 10000000b ;80h
;Standard nonprintable ASCII characters:
NUL EQU 00000000b ;nul
BEL EQU 00000111b ;bell
BS EQU 00001000b ;backspace
HT EQU 00001001b ;horizontal tab
LF EQU 00001010b ;line feed
FF EQU 00001100b ;form feed
CR EQU 00001101b ;carrage return
SUBST EQU 00011010b ;substitute
ESCAPE EQU 00011011b ;escape
SPACE EQU 00100000b ;space
COLON EQU 00111010b ;colon
SCOLON EQU 00111011b ;semicolon
Escp EQU 1
RETURN EQU 1ch
_F1 EQU 3bh
_F2 EQU 3ch
_F3 EQU 3dh
_F4 EQU 3eh
_F5 EQU 3fh
_F6 EQU 40h
_F7 EQU 41h
_F8 EQU 42h
_F9 EQU 43h
_F10 EQU 44h
_F11 EQU 57h
_F12 EQU 58h
SHFT_F1 EQU 54h
SHFT_F2 EQU 55h
SHFT_F3 EQU 56h
SHFT_F4 EQU 57h
SHFT_F5 EQU 58h
SHFT_F6 EQU 59h
SHFT_F7 EQU 5ah
SHFT_F8 EQU 5bh
SHFT_F9 EQU 5ch
SHFT_F10 EQU 5dh
SHFT_F11 EQU 87h
SHFT_F12 EQU 88h
CTRL_F1 EQU 5eh
CTRL_F2 EQU 5fh
CTRL_F3 EQU 60h
CTRL_F4 EQU 61h
CTRL_F5 EQU 62h
CTRL_F6 EQU 63h
CTRL_F7 EQU 64h
CTRL_F8 EQU 65h
CTRL_F9 EQU 66h
CTRL_F10 EQU 67h
CTRL_F11 EQU 89h
CTRL_F12 EQU 8ah
ALT_F1 EQU 68h
ALT_F2 EQU 69h
ALT_F3 EQU 6ah
ALT_F4 EQU 6bh
ALT_F5 EQU 6ch
ALT_F6 EQU 6dh
ALT_F7 EQU 6eh
ALT_F8 EQU 6fh
ALT_F9 EQU 70h
ALT_F10 EQU 71h
ALT_F11 EQU 8bh
ALT_F12 EQU 8ch
HOMEKEY EQU 47h
UPKEY EQU 48h
PGUP EQU 49h
LEFT EQU 4bh
RIGHT EQU 4dh
ENDKEY EQU 4fh ;White end key
DOWN EQU 50h
PGDN EQU 51h
ALT EQU 38h
CTRL EQU 1dh
TAB EQU 0fh
BACKSPACE EQU 0eh
LSHIFT EQU 2ah
RSHIFT EQU 36h
DEL EQU 53h
INSERT EQU 52h
SYSREQ EQU 54h
SCRLOK EQU 46h
SHFTLOK EQU 3ah
NUMLOK EQU 45h
GREYMIN EQU 4ah
GREYPLUS EQU 4eh
MINUS EQU 0ch
SLASH EQU 35h
PRTSCRN EQU 37h
CENTER5 EQU 4ch
A_KEY EQU 1eh
B_KEY EQU 30h
C_KEY EQU 2eh
D_KEY EQU 20h
E_KEY EQU 12h
F_KEY EQU 21h
G_KEY EQU 22h
H_KEY EQU 23h
I_KEY EQU 17h
J_KEY EQU 24h
K_KEY EQU 25h
L_KEY EQU 26h
M_KEY EQU 32h
N_KEY EQU 31H
O_KEY EQU 18H
P_KEY EQU 19h
Q_KEY EQU 10H
R_KEY EQU 13h
S_KEY EQU 1fh
T_KEY EQU 14H
U_KEY EQU 16h
V_KEY EQU 2fh
W_KEY EQU 11h
X_KEY EQU 2dh
Y_KEY EQU 15h
Z_KEY EQU 2ch
;; ON OFF
;;Pause E1 1D 45 E1 9D C5
;;break E0 1D 46 E0 9D C6
;;Insert E0 2A E0 52 E0 D2 E0 AA
;;Delete E0 2A E0 53 E0 D3 E0 AA
;;Home E0 2A E0 47 E0 C7 E0 AA
;;End E0 2A E0 4F E0 CF E0 AA
;;Enter E0 1C E0 9C
;;Print Screen E0 2A E0 37 E0 B7 E0 AA
;;Left E0 2A E0 4B E0 CB E0 AA
;;L Control Normal
;;R Control E0 1D E0 9D
;;L Alt Normal
;;R Alt E0 38 E0 B8
;;Grey / E0 35 E0 B5
;;mouse constants
No_Button EQU 0
Left_Button EQU 1
Right_Button EQU 2
Middle_Button EQU 4
To_ascii MACRO
cmp al,10
sbb al,69h
das
ENDM
putnop MACRO numnop
REPEAT numnop
nop
ENDM
ENDM
Para_align MACRO paragraph ;;label of begin of segment
LOCAL do_rep
do_rep = 10h - (($ - offset paragraph) AND 15)
REPT do_rep ;;force alignment on paragraph
;;boundary
byte ?
ENDM
ENDM
Print_bin MACRO register
LOCAL diary
mov cx,16
diary:
mov ax,730h
rol register,1
adc al,0
stosw
loop diary
ENDM
prt_flg MACRO
rcl dx,1
mov al,'0'
adc al,0
stosw
ENDM
prt_flge MACRO
rcl dx,1
mov al,'0'
adc al,0
mov es:[edi],ax
ENDM
prt_flg1 MACRO
mov al,'0'
adc al,0
stosw
ENDM
prt_flg1e MACRO
mov al,'0'
adc al,0
mov es:[edi],ax
ENDM
prt_eflg MACRO
rcl edx,1
mov al,'0'
adc al,0
stosw
ENDM
prt_eflge MACRO
rcl edx,1
mov al,'0'
adc al,0
mov es:[edi],ax
ENDM
chg_asc2 MACRO
shr al,4
To_ascii
stosw
ENDM
chg_asc MACRO
shr al,1 ;hex to ascii routine
shr al,1
shr al,1
shr al,1
To_ascii
stosw
ENDM
chg_asc3 MACRO
and al,15
To_ascii
stosw
ENDM
hexc MACRO
mov al,dh
chg_asc
mov al,dh
chg_asc3
mov al,dl
chg_asc
mov al,dl
chg_asc3
ENDM
hexo MACRO
mov al,dl
chg_asc
mov al,dl
chg_asc3
ENDM
hexd MACRO
rol edx,16
hexc
rol edx,16
hexc
ENDM
hexd2 MACRO
rol edx,16
hexc2
rol edx,16
hexc2
ENDM
hexd2e MACRO
rol edx,16
mov al,dh
shr al,4
To_ascii
mov es:[edi],ax
mov al,dh
and al,15
To_ascii
mov es:[edi+2],ax
mov al,dl
shr al,4
To_ascii
mov es:[edi+4],ax
mov al,dl
and al,15
To_ascii
mov es:[edi+6],ax
rol edx,16
mov al,dh
shr al,4
To_ascii
mov es:[edi+8],ax
mov al,dh
and al,15
To_ascii
mov es:[edi+10],ax
mov al,dl
shr al,4
To_ascii
mov es:[edi+12],ax
mov al,dl
and al,15
To_ascii
mov es:[edi+14],ax
ENDM
hexd4e MACRO
rol edx,16
mov al,dh
and al,15
To_ascii
rol eax,16
mov al,dh
shr al,4
To_ascii
mov es:[edi],eax
mov al,dl
and al,15
To_ascii
rol eax,16
mov al,dl
shr al,4
To_ascii
mov es:[edi+4],eax
rol edx,16
mov al,dh
and al,15
To_ascii
rol eax,16
mov al,dh
shr al,4
To_ascii
mov es:[edi+8],eax
mov al,dl
and al,15
To_ascii
rol eax,16
mov al,dl
shr al,4
To_ascii
mov es:[edi+12],eax
ENDM
hexc2 MACRO
mov al,dh
shr al,4
To_ascii
stosw
mov al,dh
chg_asc3
mov al,dl
shr al,4
To_ascii
stosw
mov al,dl
chg_asc3
ENDM
hexc2e MACRO
mov al,dh
shr al,4
To_ascii
mov es:[edi],ax
mov al,dh
and al,15
To_ascii
mov es:[edi+2],ax
mov al,dl
shr al,4
To_ascii
mov es:[edi+4],ax
mov al,dl
and al,15
To_ascii
mov es:[edi+6],ax
ENDM
hexc4e MACRO
mov al,dh
and al,15
To_ascii
rol eax,16
mov al,dh
shr al,4
To_ascii
mov es:[edi],eax
mov al,dl
and al,15
To_ascii
rol eax,16
mov al,dl
shr al,4
To_ascii
mov es:[edi+4],eax
ENDM
hexo2 MACRO
mov al,dl
shr al,4
To_ascii
stosw
mov al,dl
chg_asc3
ENDM
hexo2e MACRO
mov al,dl
shr al,4
To_ascii
mov es:[edi],ax
mov al,dl
and al,15
To_ascii
mov es:[edi+2],ax
ENDM
hexo4e MACRO
mov al,dl
and al,15
To_ascii
rol eax,16
mov al,dl
shr al,4
To_ascii
mov es:[edi],eax
ENDM
callf MACRO calgate,caladrs
byte 9ah ;;same as call far ptr callgate:offset 0
IF (@WordSize - 2)
IFB <caladrs>
dword 0 ;;masm doesn't like to do this
ELSE
dword offset caladrs
ENDIF
ELSE
IFB <caladrs>
word 0
ELSE
word offset caladrs
ENDIF
ENDIF
word calgate
ENDM
jmpf MACRO jmpgate,jmpadrs
byte 0eah ;;same as jmp far ptr jmpgate:offset 0
IF (@WordSize - 2)
IFB <jmpadrs>
dd 0
ELSE
dd offset jmpadrs
ENDIF
ELSE
IFB <jmpadrs>
word 0
ELSE
word offset jmpadrs
ENDIF
ENDIF
word jmpgate
ENDM
jmpp MACRO constant1,constant2
byte 0eah
word constant2
word constant1
ENDM
jmpc MACRO jmpcgate,jmpcadrs
byte 0eah ;;same as jmp far ptr jmpgate:offset 0
IFB <jmpadrs>
word 0
ELSE
word offset jmpcadrs
ENDIF
word SEG jmpcgate
ENDM
break_point MACRO
byte 0cch
ENDM
es_rep_movsw MACRO
byte 26h ;es: microsoft assembler will not allow this coding
rep movsw ;On a 8088 if this instruction is used to address (speically video)
;ram interrupts should be cleared before and reset after otherwise
ENDM ;data fouts will occur!
es_rep_movsb MACRO
byte 26h ;es:
rep movsb
ENDM
es_rep_movsd MACRO
byte 26h ;es:
rep movsd
ENDM
ss_rep_movsw MACRO
byte 36h ;ss:
rep movsw
ENDM
ss_rep_movsb MACRO
byte 36h ;ss:
rep movsb
ENDM
cs_rep_movsw MACRO
byte 2eh ;cs:
rep movsw
ENDM
cs_rep_movsb MACRO
byte 2eh ;cs:
rep movsb
ENDM
es_movsw MACRO
byte 26h ;es: es:movsw
movsw
ENDM
es_movsb MACRO
byte 26h ;es: es:movsb
movsb
ENDM
ss_movsw MACRO
byte 36h ;ss: ss:movsw
movsw
ENDM
ss_movsd MACRO
byte 36h ;ss: ss:movsw
movsd
ENDM
ss_movsb MACRO
byte 36h ;ss: ss:movsb
movsb
ENDM
cs_movsw MACRO
byte 2eh ;cs: cs:movsw
movsw
ENDM
cs_movsb MACRO
byte 2eh ;cs: cs:movsb
movsb
ENDM
es_lodsw MACRO
byte 26h ;es: es:lodsw
lodsw
ENDM
es_lodsb MACRO
byte 26h ;es: es:lodsb
lodsb
ENDM
gs_lodsb MACRO
byte 65h ;es: es:lodsb
lodsb
ENDM
ss_lodsb MACRO
byte 36h ;es: es:lodsb
lodsb
ENDM
ss_lodsw MACRO
byte 36h ;es: es:lodsw
lodsw
ENDM
fs_lodsb MACRO
byte 64h ;fs:lodsb
lodsb
ENDM
cs_lodsb MACRO
byte 2eh ;es: es:movsw
lodsb
ENDM
cs_lodsw MACRO
byte 2eh ;es: es:movsw
lodsw
ENDM
fs_lodsw MACRO
byte 64h ;es: es:movsw
lodsw
ENDM
es_repe_cmpsw MACRO
byte 26h ;es:
repe cmpsw
ENDM
es_repe_cmpsb MACRO
byte 26h ;es:
repe cmpsb
ENDM
ss_repe_cmpsw MACRO
byte 36h ;ss:
repe cmpsw
ENDM
ss_repe_cmpsb MACRO
byte 36h ;ss:
repe cmpsb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -