+ -
当前位置:首页 → 问答吧 → 想知道这段代码的一些具体意思,很多地方不大懂。

想知道这段代码的一些具体意思,很多地方不大懂。

时间:2011-12-15

来源:互联网

data segment
mode1 db '1. xiao xie to da xie',0ah,0dh
mode2 db '2. da xie to xiao xie',0ah,0dh
mode3 db '3. B(2) to H(16)',0ah,0dh
mode4 db '4. H(16) to B(2)',0ah,0dh
mode5 db '5. H(16) to D(10)','$'
xtod db 'input a low letter:$'
dtox db 'input a capital letter:$'
BtoHh db 'input a number of binary(0000--1111):$'
HtoBh db 'input a number of hex(0-F):$'
HtoDh db 'input a number of hex(0--F):$'
buf0 db 17
buf1 db 0
buf db 17 dup('$')
num db 0
data ends
input macro 
  mov ah,1
  int 21h
  endm
cr macro
  push ax
  push dx
  mov dl,0ah
  mov ah,2
  int 21h
  mov dl,0dh
  mov ah,2
  int 21h
  pop dx
  pop ax
  endm
writes macro a
  lea dx,a
  mov ah,9
  int 21h
  endm
write macro c
  mov dl,c
  mov ah,2
  int 21h
  endm
code segment
  assume cs:code,ds:data
start: mov ax,data
 mov ds,ax
go: writes mode1
 cr
 mov ah,1
 int 21h
 cmp al,'q'
 jz done
 cmp al,'1'
 jz R1
 cmp al,'2'
 jz R2
 cmp al,'3'
 jz R3
 cmp al,'4'
 jz R4
 cmp al,'5'
 jz R5
 jmp done
R1: call smalltobig
 jmp go
R2: call bigtosmall
 jmp go
R3: call BtoH
 jmp go
R4: call HtoB
 cr
 jmp go
R5: call HtoD
 jmp go
done: mov ah,4ch
 int 21h

smalltobig proc
 writes xtod
 cr
 input
 cr
 sub al,20h
 write al
 cr
 ret
smalltobig endp

bigtosmall proc
  writes dtox
 cr
 input
 cr
 add al,20h
 write al
 cr
 ret
bigtosmall endp

BtoH proc
 writes BtoHh
 cr
 mov bl,0
loopa: mov ah,1  
  int 21h  
 cmp al,13
 jz n
  cmp al,30h  
  jb loopa  
  cmp al,31h  
  ja loopa  
 and al,0fh
 add bl,al
 shl bl,1
 jmp loopa
n: cr
 shr bl,1
 cmp bl,9
 jb nn
 add bl,7
nn: add bl,30h
 write bl
 cr
 ret
BtoH endp
HtoB proc
 writes HtoBh
 cr
 input
 cr
 sub al,30h
 cmp al,9
 jna loop1
 sub al,7
loop1: mov cl,4
 shl al,cl
 mov cl,4  
 mov bl,al
gg: shl bl,1
 jc lop
 mov dl,'0'
 jmp lop1
lop: mov dl,'1'
lop1: mov ah,2
 int 21h
 loop gg
 ret
HtoB endp
HtoD proc
  writes HtoDh
 cr
 
 mov bx,0
tt: input
 cmp al,13
 jz y1
 cmp al,'9' 
 jna y2
 sub al,7
y2: sub al,30h
 mov cl,4
 mov ah,0
 add bx,ax
 
 shl bx,cl
 jmp tt
y1: cr
 shr bx,cl
 mov ax,bx
 aaa
 add ax ,3030h
 mov bx,ax
 write bh
 write bl
 cr
 ret 
HtoD endp
code ends
  end start

 我只看懂这个代码大概的作用,但很多地方不知道具体意思,希望有高手能解释下,一些重要的地方、关键地方注释下,万分感谢~!

作者: dhxaohei   发布时间: 2011-12-15

请具体指出!!

作者: yh_no_code   发布时间: 2011-12-15

热门下载

更多