📄 vputstr.cod
字号:
; Static Name Aliases
;
TITLE vputstr
; NAME vputstr.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 _vputstr
_vputstr 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 9
; row = 4
; col = 6
; str = 8
; attr = 12
; retrace = 14
; register si = c
; scr_ofs = -6
; Line 13
*** 00000a e8 00 00 call _vidmode
*** 00000d 3d 07 00 cmp ax,7
*** 000010 75 20 jne $I18
; Line 14
; Line 15
*** 000012 b8 a0 00 mov ax,160
*** 000015 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 000018 8b 4e 06 mov cx,[bp+6] ;col
*** 00001b d1 e1 shl cx,1
*** 00001d 03 c1 add ax,cx
*** 00001f 80 c4 00 add ah,0
*** 000022 ba 00 b0 mov dx,-20480
*** 000025 89 46 fa mov [bp-6],ax ;scr_ofs
*** 000028 89 56 fc mov [bp-4],dx
; Line 16
*** 00002b c7 46 0e 00 00 mov WORD PTR [bp+14],0 ;retrace
; Line 17
; Line 18
*** 000030 eb 66 jmp SHORT $L20001
$I18:
; Line 19
; Line 20
*** 000032 e8 00 00 call _vidmode
*** 000035 3d 02 00 cmp ax,2
*** 000038 75 04 jne $I20
; Line 21
*** 00003a 80 4e 0c 07 or BYTE PTR [bp+12],7 ;attr
; Line 22
$I20:
*** 00003e b8 a0 00 mov ax,160
*** 000041 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 000044 8b 4e 06 mov cx,[bp+6] ;col
*** 000047 d1 e1 shl cx,1
*** 000049 03 c1 add ax,cx
*** 00004b 80 c4 00 add ah,0
*** 00004e ba 00 b8 mov dx,-18432
*** 000051 89 46 fa mov [bp-6],ax ;scr_ofs
*** 000054 89 56 fc mov [bp-4],dx
; Line 23
; Line 25
*** 000057 eb 3f jmp SHORT $L20001
$WC21:
; Line 26
; Line 27
*** 000059 8b 76 0c mov si,[bp+12] ;attr
*** 00005c b1 08 mov cl,8
*** 00005e d3 e6 shl si,cl
*** 000060 c4 5e 08 les bx,[bp+8] ;str
*** 000063 ff 46 08 inc WORD PTR [bp+8] ;str
*** 000066 26 8a 07 mov al,es:[bx]
*** 000069 98 cbw
*** 00006a 0b f0 or si,ax
; Line 29
*** 00006c 83 7e 0e 00 cmp WORD PTR [bp+14],0 ;retrace
*** 000070 74 1c je $I23
; Line 30
; Line 31
$WC25:
*** 000072 b8 da 03 mov ax,986
*** 000075 50 push ax
*** 000076 e8 00 00 call _inp
*** 000079 83 c4 02 add sp,2
*** 00007c a8 01 test al,1
*** 00007e 75 f2 jne $WC25
; Line 32
$WC27:
*** 000080 b8 da 03 mov ax,986
*** 000083 50 push ax
*** 000084 e8 00 00 call _inp
*** 000087 83 c4 02 add sp,2
*** 00008a a8 01 test al,1
*** 00008c 74 f2 je $WC27
; Line 33
; Line 35
$I23:
*** 00008e c4 5e fa les bx,[bp-6] ;scr_ofs
*** 000091 83 46 fa 02 add WORD PTR [bp-6],2 ;scr_ofs
*** 000095 26 89 37 mov es:[bx],si
; Line 36
$L20001:
*** 000098 c4 5e 08 les bx,[bp+8] ;str
*** 00009b 26 80 3f 00 cmp BYTE PTR es:[bx],0
*** 00009f 75 b8 jne $WC21
; Line 37
*** 0000a1 5e pop si
*** 0000a2 8b e5 mov sp,bp
*** 0000a4 5d pop bp
*** 0000a5 c3 ret
_vputstr ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -