📄 vbufwin.cod
字号:
; Static Name Aliases
;
TITLE vbufwin
; NAME vbufwin.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 _vidmode:NEAR
EXTRN _inp:NEAR
EXTRN __chkstk:NEAR
_TEXT SEGMENT
; Line 8
PUBLIC _vbufwin
_vbufwin PROC NEAR
*** 000000 55 push bp
*** 000001 8b ec mov bp,sp
*** 000003 b8 0a 00 mov ax,10
*** 000006 e8 00 00 call __chkstk
*** 000009 56 push si
; Line 10
; buffer = 4
; row = 6
; col = 8
; width = 10
; height = 12
; direction = 14
; retrace = 16
; scr_ofs = -4
; vstart = -8
; times = -10
; Line 14
*** 00000a e8 00 00 call _vidmode
*** 00000d 3d 07 00 cmp ax,7
*** 000010 75 11 jne $I22
; Line 15
; Line 16
*** 000012 c7 46 f8 00 00 mov WORD PTR [bp-8],0 ;vstart
*** 000017 c7 46 fa 00 b0 mov WORD PTR [bp-6],-20480
; Line 17
*** 00001c c7 46 10 00 00 mov WORD PTR [bp+16],0 ;retrace
; Line 18
; Line 19
*** 000021 eb 0a jmp SHORT $I23
$I22:
; Line 20
*** 000023 c7 46 f8 00 00 mov WORD PTR [bp-8],0 ;vstart
*** 000028 c7 46 fa 00 b8 mov WORD PTR [bp-6],-18432
$I23:
; Line 22
*** 00002d b8 a0 00 mov ax,160
*** 000030 f7 6e 06 imul WORD PTR [bp+6] ;row
*** 000033 01 46 f8 add [bp-8],ax ;vstart
; Line 24
*** 000036 eb 76 jmp SHORT $L20002
$WC24:
; Line 25
; Line 26
*** 000038 8b 46 08 mov ax,[bp+8] ;col
*** 00003b d1 e0 shl ax,1
*** 00003d 03 46 f8 add ax,[bp-8] ;vstart
*** 000040 8b 56 fa mov dx,[bp-6]
*** 000043 89 46 fc mov [bp-4],ax ;scr_ofs
*** 000046 89 56 fe mov [bp-2],dx
; Line 28
*** 000049 8b 46 0a mov ax,[bp+10] ;width
*** 00004c 89 46 f6 mov [bp-10],ax ;times
; Line 29
*** 00004f eb 4f jmp SHORT $L20001
$WC26:
; Line 30
; Line 31
*** 000051 83 7e 10 00 cmp WORD PTR [bp+16],0 ;retrace
*** 000055 74 20 je $I28
; Line 32
; Line 33
$WC30:
*** 000057 b8 da 03 mov ax,986
*** 00005a 50 push ax
*** 00005b e8 00 00 call _inp
*** 00005e 83 c4 02 add sp,2
*** 000061 24 01 and al,1
*** 000063 3c 01 cmp al,1
*** 000065 74 f0 je $WC30
; Line 34
$WC32:
*** 000067 b8 da 03 mov ax,986
*** 00006a 50 push ax
*** 00006b e8 00 00 call _inp
*** 00006e 83 c4 02 add sp,2
*** 000071 24 01 and al,1
*** 000073 3c 01 cmp al,1
*** 000075 75 f0 jne $WC32
; Line 35
; Line 36
$I28:
*** 000077 83 7e 0e 00 cmp WORD PTR [bp+14],0 ;direction
*** 00007b 75 0d jne $I34
; Line 37
*** 00007d 8b 5e 04 mov bx,[bp+4] ;buffer
*** 000080 c4 76 fc les si,[bp-4] ;scr_ofs
*** 000083 26 8b 04 mov ax,es:[si]
*** 000086 89 07 mov [bx],ax
; Line 38
*** 000088 eb 0b jmp SHORT $I35
$I34:
; Line 39
*** 00008a c4 5e fc les bx,[bp-4] ;scr_ofs
*** 00008d 8b 76 04 mov si,[bp+4] ;buffer
*** 000090 8b 04 mov ax,[si]
*** 000092 26 89 07 mov es:[bx],ax
$I35:
; Line 40
*** 000095 83 46 04 02 add WORD PTR [bp+4],2 ;buffer
*** 000099 83 46 fc 02 add WORD PTR [bp-4],2 ;scr_ofs
*** 00009d ff 4e f6 dec WORD PTR [bp-10] ;times
; Line 41
$L20001:
*** 0000a0 83 7e f6 00 cmp WORD PTR [bp-10],0 ;times
*** 0000a4 75 ab jne $WC26
; Line 42
*** 0000a6 ff 4e 0c dec WORD PTR [bp+12] ;height
; Line 43
*** 0000a9 81 46 f8 a0 00 add WORD PTR [bp-8],160 ;vstart
; Line 44
$L20002:
*** 0000ae 83 7e 0c 00 cmp WORD PTR [bp+12],0 ;height
*** 0000b2 75 84 jne $WC24
; Line 45
*** 0000b4 5e pop si
*** 0000b5 8b e5 mov sp,bp
*** 0000b7 5d pop bp
*** 0000b8 c3 ret
_vbufwin ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -