📄 u.asm
字号:
.MODEL HUGE
STACK SEGMENT STACK PARA 'STACK'
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT WORD PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA,ss:stack
pp1 PROC FAR
START: .386P
CLI
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,200
STI
;
LEA DX,ds:msg_k ;prompt
mov cx,1400h
MOV AH,9
INT 21H
LEA DX,msg_SS ;ss
mov cx,1430h
MOV AH,9
INT 21H
MOV AX,SS
CALL BIN_TO_ASCII
LEA DX,ASCII_BUF
mov cx,1436h
MOV AH,9
INT 21H
LEA DX,msg_CS ;cs
mov cx,1440h
MOV AH,9
INT 21H
MOV AX,CS
CALL BIN_TO_ASCII
LEA DX,ASCII_BUF
mov cx,1446h
MOV AH,9
INT 21H
cli
mov si,10
mov k,0
l_out:
mov ax,k
inc ax
mov k,ax
mov edi,02FFFFFFH
l_in: mov ax,l
mul l
dec edi
jnz l_in
MOV AX,K
CALL BIN_TO_ASCII
LEA DX,ASCII_BUF
mov cx,1416h
MOV AH,9
INT 21H
dec si
jnz l_out
pp1_end:
LEA DX,OK_MSG
mov cx,1500h
MOV AH,9
INT 21H
pp1_end1:
MOV AX,4C00H
INT 21H
;
pp1 ENDP
BIN_TO_ASCII PROC FAR
; input AX=binary value
; output ASCII_BUF:string
PUSH CX
PUSH DX
PUSH SI
MOV CL,020H
MOV BYTE PTR ASCII_BUF,CL
MOV BYTE PTR ASCII_BUF+1,CL
MOV BYTE PTR ASCII_BUF+2,CL
MOV BYTE PTR ASCII_BUF+3,CL
MOV CX,10
LEA SI,ASCII_BUF+4
BTOA1: CMP AX,10
JB BTOA2
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI],DL
DEC SI
JMP BTOA1
BTOA2: OR AL,30H
MOV [SI],AL ;
POP SI
POP DX
POP CX
RET
BIN_TO_ASCII ENDP
CODE ENDS
DATA SEGMENT PUBLIC 'DATA'
g_tt dw ?
k dw ?
l dw 1
ASCII_BUF DB 5 DUP(30H),'$'
t_BUF DB 10240 DUP(0)
OK_MSG DB 'User_Ps end, Bye! $'
msg_k DB 'user_Ps ... running $'
msg_ss DB 'ss: $'
msg_cs DB 'cs: $'
DATA ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -