📄 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 = 10
; retrace = 12
; 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 0c 00 00 mov WORD PTR [bp+12],0 ;retrace
; Line 17
; Line 18
*** 000030 eb 59 jmp SHORT $L20001
$I18:
; Line 19
*** 000032 b8 a0 00 mov ax,160
*** 000035 f7 6e 04 imul WORD PTR [bp+4] ;row
*** 000038 8b 4e 06 mov cx,[bp+6] ;col
*** 00003b d1 e1 shl cx,1
*** 00003d 03 c1 add ax,cx
*** 00003f 80 c4 00 add ah,0
*** 000042 ba 00 b8 mov dx,-18432
*** 000045 89 46 fa mov [bp-6],ax ;scr_ofs
*** 000048 89 56 fc mov [bp-4],dx
; Line 21
*** 00004b eb 3e jmp SHORT $L20001
$WC20:
; Line 22
; Line 23
*** 00004d 8b 76 0a mov si,[bp+10] ;attr
*** 000050 b1 08 mov cl,8
*** 000052 d3 e6 shl si,cl
*** 000054 8b 5e 08 mov bx,[bp+8] ;str
*** 000057 ff 46 08 inc WORD PTR [bp+8] ;str
*** 00005a 8a 07 mov al,[bx]
*** 00005c 98 cbw
*** 00005d 0b f0 or si,ax
; Line 25
*** 00005f 83 7e 0c 00 cmp WORD PTR [bp+12],0 ;retrace
*** 000063 74 1c je $I22
; Line 26
; Line 27
$WC24:
*** 000065 b8 da 03 mov ax,986
*** 000068 50 push ax
*** 000069 e8 00 00 call _inp
*** 00006c 83 c4 02 add sp,2
*** 00006f a8 01 test al,1
*** 000071 75 f2 jne $WC24
; Line 28
$WC26:
*** 000073 b8 da 03 mov ax,986
*** 000076 50 push ax
*** 000077 e8 00 00 call _inp
*** 00007a 83 c4 02 add sp,2
*** 00007d a8 01 test al,1
*** 00007f 74 f2 je $WC26
; Line 29
; Line 31
$I22:
*** 000081 c4 5e fa les bx,[bp-6] ;scr_ofs
*** 000084 83 46 fa 02 add WORD PTR [bp-6],2 ;scr_ofs
*** 000088 26 89 37 mov es:[bx],si
; Line 32
$L20001:
*** 00008b 8b 5e 08 mov bx,[bp+8] ;str
*** 00008e 80 3f 00 cmp BYTE PTR [bx],0
*** 000091 75 ba jne $WC20
; Line 33
*** 000093 5e pop si
*** 000094 8b e5 mov sp,bp
*** 000096 5d pop bp
*** 000097 c3 ret
_vputstr ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -