📄 vputc.cod
字号:
; Static Name Aliases
;
TITLE vputc
; NAME vputc.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 6
PUBLIC _vputc
_vputc PROC NEAR
*** 000000 55 push bp
*** 000001 8b ec mov bp,sp
*** 000003 b8 06 00 mov ax,6
*** 000006 e8 00 00 call __chkstk
*** 000009 56 push si
; Line 7
; row = 4
; col = 6
; chr = 8
; attr = 10
; retrace = 12
; register si = c
; scr_ofs = -6
; Line 11
*** 00000a e8 00 00 call _vidmode
*** 00000d 3d 07 00 cmp ax,7
*** 000010 75 24 jne $I18
; Line 12
; Line 13
*** 000012 80 4e 0a 07 or BYTE PTR [bp+10],7 ;attr
; Line 14
*** 000016 b8 a0 00 mov ax,160
*** 000019 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 00001c 8b 4e 06 mov cx,[bp+6] ;col
*** 00001f d1 e1 shl cx,1
*** 000021 03 c1 add ax,cx
*** 000023 80 c4 00 add ah,0
*** 000026 ba 00 b0 mov dx,-20480
*** 000029 89 46 fa mov [bp-6],ax ;scr_ofs
*** 00002c 89 56 fc mov [bp-4],dx
; Line 15
*** 00002f c7 46 0c 00 00 mov WORD PTR [bp+12],0 ;retrace
; Line 16
; Line 17
*** 000034 eb 25 jmp SHORT $I19
$I18:
; Line 18
; Line 19
*** 000036 e8 00 00 call _vidmode
*** 000039 3d 02 00 cmp ax,2
*** 00003c 75 04 jne $I20
; Line 20
*** 00003e 80 4e 0a 07 or BYTE PTR [bp+10],7 ;attr
; Line 21
$I20:
*** 000042 b8 a0 00 mov ax,160
*** 000045 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 000048 8b 4e 06 mov cx,[bp+6] ;col
*** 00004b d1 e1 shl cx,1
*** 00004d 03 c1 add ax,cx
*** 00004f 80 c4 00 add ah,0
*** 000052 ba 00 b8 mov dx,-18432
*** 000055 89 46 fa mov [bp-6],ax ;scr_ofs
*** 000058 89 56 fc mov [bp-4],dx
; Line 22
$I19:
; Line 24
*** 00005b 8b 76 0a mov si,[bp+10] ;attr
*** 00005e b1 08 mov cl,8
*** 000060 d3 e6 shl si,cl
*** 000062 0b 76 08 or si,[bp+8] ;chr
; Line 26
*** 000065 83 7e 0c 00 cmp WORD PTR [bp+12],0 ;retrace
*** 000069 74 1c je $I21
; Line 27
; Line 28
$WC23:
*** 00006b b8 da 03 mov ax,986
*** 00006e 50 push ax
*** 00006f e8 00 00 call _inp
*** 000072 83 c4 02 add sp,2
*** 000075 a8 01 test al,1
*** 000077 75 f2 jne $WC23
; Line 29
$WC25:
*** 000079 b8 da 03 mov ax,986
*** 00007c 50 push ax
*** 00007d e8 00 00 call _inp
*** 000080 83 c4 02 add sp,2
*** 000083 a8 01 test al,1
*** 000085 74 f2 je $WC25
; Line 30
; Line 32
$I21:
*** 000087 c4 5e fa les bx,[bp-6] ;scr_ofs
*** 00008a 26 89 37 mov es:[bx],si
; Line 33
*** 00008d 5e pop si
*** 00008e 8b e5 mov sp,bp
*** 000090 5d pop bp
*** 000091 c3 ret
_vputc ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -