论坛: 编程破解 标题: BCD码0-9转换ASCII码,斑竹,高手进来帮忙看一下,不知道错在哪里了 复制本贴地址    
作者: jzit_wmm [jzit_wmm]    论坛用户   登录
.MODEL
.DATA
ASCII DB  NUL SOH STX ETX EOT
          ENQ ACK BEL BS  HT
LEN  EQU $-ASCII
BCD  DB  0 1 2 3 4 5 6 7 8 9
ARRAY DB  9 DUP(?)

.CODE
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
      MOV  AX,DATA
      MOV  DS,AX
      MOV  ES,AX
      PUSH AX
      PUSH BX
      PUSH SI
      PUSH DI
      MOV  AX,0
      LEA  BX,ASCII
      LEA  SI,BCD
      LEA  DI ARRAY
      MOV  CX,LEN
GOON:  LODSB
      XLAT ASCII
      STOSB
      LOOP GOON
      MOV AH,4CH
      INT 21H
CODE ENDS
    END START
 

地主 发表时间: 05-05-11 21:32

回复: 286 [unique]   版主   登录
.MODEL
DATA  SEGMENT
ASCII DB  '0','1','2','3','4','5','6','7','8','9'  <----------------
LEN  EQU $-ASCII
BCD  DB  0,1,2,3,4,5,6,7,8,9    <----------------
ARRAY DB  9 DUP(?)
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
      MOV  AX,DATA
      MOV  DS,AX
      MOV  ES,AX
      PUSH AX
      PUSH BX
      PUSH SI
      PUSH DI
      MOV  AX,0
      LEA  BX,ASCII
      LEA  SI,BCD
      LEA  DI,ARRAY            <----------------
      MOV  CX,LEN
GOON:  LODSB
      XLAT ASCII
      STOSB
      LOOP GOON
      MOV AH,4CH
      INT 21H
CODE ENDS
    END START

B1层 发表时间: 05-05-12 08:52

回复: jzit_wmm [jzit_wmm]   论坛用户   登录
还有点疑问,为什么ASCII码要那样写,我可是照着书上写的。另外,我想改造一下程序,ASCII码是由键盘输入的,我想把程序设计成 由键盘输入码值,然后回车,得到 BCD码 ,怎么改啊,给个提示。

B2层 发表时间: 05-05-12 11:18

回复: 286 [unique]   版主   登录
ASCII DB  NUL SOH STX ETX EOT
          ENQ ACK BEL BS  HT
如果是书上的,这些符号此前肯定有说明,你没注意到。

换成输入的也简单,输入部分由int 21h中断完成,显示部分也由int 21h中断完成即可。
输入是9号功能调用,显示是11号调用。(七八年没看过了,可能不对,请参阅相关资料。)

B3层 发表时间: 05-05-12 11:22

回复: jzit_wmm [jzit_wmm]   论坛用户   登录
BCD码又叫二-十码,0-9跟十六进制一样。所以BCD码加上30h就等于ASCII码的十六进制。

B4层 发表时间: 05-05-13 16:46

回复: jzit_wmm [jzit_wmm]   论坛用户   登录
我又改了一下。

.MODEL SMALL
.DATA
ASCII DB  30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
LEN  EQU $-ASCII
BCD  DB  0,1,2,3,4,5,6,7,8,9
ARRAY DB  10 DUP(?)

.CODE
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
      MOV  AX,DATA
      MOV  DS,AX
      MOV  ES,AX
      PUSH AX
      PUSH BX
      PUSH SI
      PUSH DI
      MOV  AX,0
      LEA  BX,ASCII
      LEA  SI,BCD
      LEA  DI,ARRAY
      MOV  CX,LEN
GOON:  LODSB
      XLAT ASCII
      STOSB
      LOOP GOON
      MOV AH,4CH
      INT 21H

    END START


B5层 发表时间: 05-05-13 16:54

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号