📄 vputbox.cod
字号:
; Static Name Aliases
;
TITLE vputbox
; NAME vputbox.C
.287
_TEXT SEGMENT BYTE PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT WORD PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT WORD PUBLIC 'BSS'
_BSS ENDS
DGROUP GROUP CONST, _BSS, _DATA
ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
EXTRN _vputn:NEAR
EXTRN _vidmode:NEAR
EXTRN _vput:NEAR
EXTRN __chkstk:NEAR
_TEXT SEGMENT
; Line 16
PUBLIC _vputbox
_vputbox PROC NEAR
*** 000000 55 push bp
*** 000001 8b ec mov bp,sp
*** 000003 b8 10 00 mov ax,16
*** 000006 e8 00 00 call __chkstk
*** 000009 56 push si
; Line 17
; row = 4
; col = 6
; width = 8
; height = 10
; attr = 12
; battr = 14
; retrace = 16
; frame = 18
; register si = c
; scr_ofs = -8
; vstart = -12
; iwid = -2
; iht = -16
; i = -14
; Line 22
*** 00000a 8b 46 08 mov ax,[bp+8] ;width
*** 00000d 2d 02 00 sub ax,2
*** 000010 89 46 fe mov [bp-2],ax ;iwid
; Line 23
*** 000013 8b 46 0a mov ax,[bp+10] ;height
*** 000016 2d 02 00 sub ax,2
*** 000019 89 46 f0 mov [bp-16],ax ;iht
; Line 25
*** 00001c e8 00 00 call _vidmode
*** 00001f 3d 07 00 cmp ax,7
*** 000022 75 19 jne $I26
; Line 26
; Line 27
*** 000024 b8 a0 00 mov ax,160
*** 000027 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 00002a 80 c4 00 add ah,0
*** 00002d ba 00 b0 mov dx,-20480
*** 000030 89 46 f4 mov [bp-12],ax ;vstart
*** 000033 89 56 f6 mov [bp-10],dx
; Line 28
*** 000036 c7 46 10 00 00 mov WORD PTR [bp+16],0 ;retrace
; Line 29
; Line 30
*** 00003b eb 12 jmp SHORT $I27
$I26:
; Line 31
*** 00003d b8 a0 00 mov ax,160
*** 000040 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 000043 80 c4 00 add ah,0
*** 000046 ba 00 b8 mov dx,-18432
*** 000049 89 46 f4 mov [bp-12],ax ;vstart
*** 00004c 89 56 f6 mov [bp-10],dx
$I27:
; Line 33
*** 00004f 8b 46 06 mov ax,[bp+6] ;col
*** 000052 d1 e0 shl ax,1
*** 000054 03 46 f4 add ax,[bp-12] ;vstart
*** 000057 8b 56 f6 mov dx,[bp-10]
*** 00005a 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 00005d 89 56 fa mov [bp-6],dx
; Line 34
*** 000060 8b 5e 12 mov bx,[bp+18] ;frame
*** 000063 8b 37 mov si,[bx]
*** 000065 8b 46 0e mov ax,[bp+14] ;battr
*** 000068 b1 08 mov cl,8
*** 00006a d3 e0 shl ax,cl
*** 00006c 0b f0 or si,ax
; Line 35
*** 00006e ff 76 10 push WORD PTR [bp+16] ;retrace
*** 000071 56 push si
*** 000072 52 push dx
*** 000073 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 000076 83 46 f8 02 add WORD PTR [bp-8],2 ;scr_ofs
*** 00007a e8 00 00 call _vput
*** 00007d 83 c4 08 add sp,8
; Line 37
*** 000080 8b 5e 12 mov bx,[bp+18] ;frame
*** 000083 8b 77 08 mov si,[bx+8]
*** 000086 8b 46 0e mov ax,[bp+14] ;battr
*** 000089 b1 08 mov cl,8
*** 00008b d3 e0 shl ax,cl
*** 00008d 0b f0 or si,ax
; Line 38
*** 00008f ff 76 10 push WORD PTR [bp+16] ;retrace
*** 000092 ff 76 fe push WORD PTR [bp-2] ;iwid
*** 000095 56 push si
*** 000096 ff 76 fa push WORD PTR [bp-6]
*** 000099 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 00009c e8 00 00 call _vputn
*** 00009f 83 c4 0a add sp,10
*** 0000a2 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 0000a5 89 56 fa mov [bp-6],dx
; Line 40
*** 0000a8 8b 5e 12 mov bx,[bp+18] ;frame
*** 0000ab 8b 77 02 mov si,[bx+2]
*** 0000ae 8b 46 0e mov ax,[bp+14] ;battr
*** 0000b1 b1 08 mov cl,8
*** 0000b3 d3 e0 shl ax,cl
*** 0000b5 0b f0 or si,ax
; Line 41
*** 0000b7 ff 76 10 push WORD PTR [bp+16] ;retrace
*** 0000ba 56 push si
*** 0000bb 52 push dx
*** 0000bc ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 0000bf e8 00 00 call _vput
*** 0000c2 83 c4 08 add sp,8
; Line 43
*** 0000c5 8b 46 f0 mov ax,[bp-16] ;iht
*** 0000c8 89 46 f2 mov [bp-14],ax ;i
; Line 44
*** 0000cb eb 7f jmp SHORT $L20001
$WC29:
; Line 45
; Line 46
*** 0000cd 81 46 f4 a0 00 add WORD PTR [bp-12],160 ;vstart
; Line 47
*** 0000d2 8b 46 06 mov ax,[bp+6] ;col
*** 0000d5 d1 e0 shl ax,1
*** 0000d7 03 46 f4 add ax,[bp-12] ;vstart
*** 0000da 8b 56 f6 mov dx,[bp-10]
*** 0000dd 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 0000e0 89 56 fa mov [bp-6],dx
; Line 49
*** 0000e3 8b 5e 12 mov bx,[bp+18] ;frame
*** 0000e6 8b 77 0a mov si,[bx+10]
*** 0000e9 8b 46 0e mov ax,[bp+14] ;battr
*** 0000ec b1 08 mov cl,8
*** 0000ee d3 e0 shl ax,cl
*** 0000f0 0b f0 or si,ax
; Line 50
*** 0000f2 ff 76 10 push WORD PTR [bp+16] ;retrace
*** 0000f5 56 push si
*** 0000f6 52 push dx
*** 0000f7 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 0000fa 83 46 f8 02 add WORD PTR [bp-8],2 ;scr_ofs
*** 0000fe e8 00 00 call _vput
*** 000101 83 c4 08 add sp,8
; Line 52
*** 000104 8b 5e 12 mov bx,[bp+18] ;frame
*** 000107 8b 77 0c mov si,[bx+12]
*** 00010a 8b 46 0c mov ax,[bp+12] ;attr
*** 00010d b1 08 mov cl,8
*** 00010f d3 e0 shl ax,cl
*** 000111 0b f0 or si,ax
; Line 53
*** 000113 ff 76 10 push WORD PTR [bp+16] ;retrace
*** 000116 ff 76 fe push WORD PTR [bp-2] ;iwid
*** 000119 56 push si
*** 00011a ff 76 fa push WORD PTR [bp-6]
*** 00011d ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 000120 e8 00 00 call _vputn
*** 000123 83 c4 0a add sp,10
*** 000126 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 000129 89 56 fa mov [bp-6],dx
; Line 55
*** 00012c 8b 5e 12 mov bx,[bp+18] ;frame
*** 00012f 8b 77 0a mov si,[bx+10]
*** 000132 8b 46 0e mov ax,[bp+14] ;battr
*** 000135 b1 08 mov cl,8
*** 000137 d3 e0 shl ax,cl
*** 000139 0b f0 or si,ax
; Line 56
*** 00013b ff 76 10 push WORD PTR [bp+16] ;retrace
*** 00013e 56 push si
*** 00013f 52 push dx
*** 000140 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 000143 e8 00 00 call _vput
*** 000146 83 c4 08 add sp,8
; Line 57
*** 000149 ff 4e f2 dec WORD PTR [bp-14] ;i
; Line 58
$L20001:
*** 00014c 83 7e f2 00 cmp WORD PTR [bp-14],0 ;i
*** 000150 74 03 je $JCC336
*** 000152 e9 78 ff jmp $WC29
$JCC336:
; Line 59
*** 000155 81 46 f4 a0 00 add WORD PTR [bp-12],160 ;vstart
; Line 60
*** 00015a 8b 46 06 mov ax,[bp+6] ;col
*** 00015d d1 e0 shl ax,1
*** 00015f 03 46 f4 add ax,[bp-12] ;vstart
*** 000162 8b 56 f6 mov dx,[bp-10]
*** 000165 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 000168 89 56 fa mov [bp-6],dx
; Line 61
*** 00016b 8b 5e 12 mov bx,[bp+18] ;frame
*** 00016e 8b 77 04 mov si,[bx+4]
*** 000171 8b 46 0e mov ax,[bp+14] ;battr
*** 000174 b1 08 mov cl,8
*** 000176 d3 e0 shl ax,cl
*** 000178 0b f0 or si,ax
; Line 62
*** 00017a ff 76 10 push WORD PTR [bp+16] ;retrace
*** 00017d 56 push si
*** 00017e 52 push dx
*** 00017f ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 000182 83 46 f8 02 add WORD PTR [bp-8],2 ;scr_ofs
*** 000186 e8 00 00 call _vput
*** 000189 83 c4 08 add sp,8
; Line 64
*** 00018c 8b 5e 12 mov bx,[bp+18] ;frame
*** 00018f 8b 77 08 mov si,[bx+8]
*** 000192 8b 46 0e mov ax,[bp+14] ;battr
*** 000195 b1 08 mov cl,8
*** 000197 d3 e0 shl ax,cl
*** 000199 0b f0 or si,ax
; Line 65
*** 00019b ff 76 10 push WORD PTR [bp+16] ;retrace
*** 00019e ff 76 fe push WORD PTR [bp-2] ;iwid
*** 0001a1 56 push si
*** 0001a2 ff 76 fa push WORD PTR [bp-6]
*** 0001a5 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 0001a8 e8 00 00 call _vputn
*** 0001ab 83 c4 0a add sp,10
*** 0001ae 89 46 f8 mov [bp-8],ax ;scr_ofs
*** 0001b1 89 56 fa mov [bp-6],dx
; Line 67
*** 0001b4 8b 5e 12 mov bx,[bp+18] ;frame
*** 0001b7 8b 77 06 mov si,[bx+6]
*** 0001ba 8b 46 0e mov ax,[bp+14] ;battr
*** 0001bd b1 08 mov cl,8
*** 0001bf d3 e0 shl ax,cl
*** 0001c1 0b f0 or si,ax
; Line 68
*** 0001c3 ff 76 10 push WORD PTR [bp+16] ;retrace
*** 0001c6 56 push si
*** 0001c7 52 push dx
*** 0001c8 ff 76 f8 push WORD PTR [bp-8] ;scr_ofs
*** 0001cb e8 00 00 call _vput
*** 0001ce 83 c4 08 add sp,8
; Line 69
*** 0001d1 5e pop si
*** 0001d2 8b e5 mov sp,bp
*** 0001d4 5d pop bp
*** 0001d5 c3 ret
_vputbox ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -