📄 lk.asm
字号:
INCLUDE IOSTREAM.LIB
DATAS SEGMENT
D DW 10000, 1000, 100, 10, 1
BUF1 DW 200 DUP(0)
BUF2 DB 0,0,0,0,0,"$"
BUF3 DB 800 DUP(0)
STR DB 'PLEASE INPUT A STRING:$'
STR1 DB 'NUMBER IS:$'
STR3 DB 'ADDESS IS:$'
STR4 DB 'NO DOLLAR IS HERE!$'
F DB -1
H DB 0
M DW 0
BUF4 DB 200 DUP(0)
TAB DB 200
DB ?
DB 200 DUP(0)
COUNT EQU $-TAB
DATAS ENDS
STACKS SEGMENT
DB 200 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
OUTPUT1 STR
INPUT TAB
LEA DI,TAB+2
MOV CX,COUNT
MOV AL,'$'
CLD
LEA SI,BUF1
LEA BX,BUF4
PUSH BX
LP:
REPNE SCASB
JNE NT
INC H
MOV [SI],DI
INC SI
INC SI
LEA BX,TAB+2
MOV M,DI
SUB M,BX
MOV DX,M
MOV BX,0
PUSH BX
POP BX
POP BX
MOV [BX],DL
INC BX
PUSH BX
JMP LP
NT:
CMP H,0
JE ET1
MOV AH,H
MOV F,AH
RETURN
OUTPUT1 STR1
CALL TEN
RETURN
OUTPUT1 STR3
RETURN
LEA SI,BUF1
LEA BX,BUF4
PUSH BX
LP3:
CMP [BX],00H
JZ ET
PUSH BX
POP BX
POP BX
MOV DL,BYTE PTR [BX]
MOV F,DL
PUSH SI
CALL TEN
POP SI
INC BX
PUSH BX
MOV AH,2
MOV DL,20H
INT 21H
LP2:
PUSH BX
MOV BX,0
MOV BX,[SI]
DEC BX
CALL BINTOHEX
MOV AH,2
MOV DL,20H
INT 21H
INC SI
INC SI
POP BX
JMP LP3
ET:
MOV AH,4CH
INT 21H
ET1:
RETURN
OUTPUT1 STR4
JMP ET
BINTOHEX PROC
MOV DI,0
LEA DI,BUF3
MOV CH,4
AGAIN:
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL OPUT
ADD AL,7H
OPUT:
MOV [DI],AL
INC DI
DEC CH
JNZ AGAIN
MOV [DI],BYTE PTR 'H'
MOV [DI+1],BYTE PTR '$'
LEA DX,BUF3
MOV AH,9
INT 21H
RET
BINTOHEX ENDP
TEN PROC
mov ax,0
mov al,F
mov si, offset D
mov di, offset BUF2
mov cx,5
aa:
mov dx,0
div word ptr [si]
add al,48
mov byte ptr [di],al
inc di
add si,2
mov ax,dx
loop aa
mov cx,4
mov di, offset BUF2
bb:
cmp byte ptr [di],'0'
jne print
inc di
loop bb
print:
mov dx,di
mov ah,9
int 21h
RET
TEN ENDP
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -