打印

怎样用汇编程序把字符软换为ASCII?

[复制链接]
2413|4
手机看帖
扫描二维码
随时随地手机跟帖
沙发
Mindor| | 2010-1-22 07:39 | 只看该作者
把字符转换成ASCII?不是很明白你的意思~
ASCII码在内存中字符是以二进制存放的,只要你根据ASCII码往内存写入相应的二进制就行了,
读出ASCII码时也是读出二进制~

使用特权

评论回复
板凳
冷漠| | 2010-1-23 12:45 | 只看该作者
很简单。把下面函数转为汇编语言即可。例如输入oxoe,函数输出0x45。

binary_to_ascii( char value )
{
putchar("0123456789ABCDEF"[value] );
}

使用特权

评论回复
地板
冷漠| | 2010-1-23 12:47 | 只看该作者
本帖最后由 冷漠 于 2010-1-23 12:49 编辑

?PR?_binary_to_ascii?TYPEDEF             SEGMENT CODE
?PR?main?TYPEDEF     SEGMENT CODE
?CO?TYPEDEF          SEGMENT CODE
        EXTRN        CODE (_putchar)
        EXTRN        CODE (?C_STARTUP)
        PUBLIC        main
        PUBLIC        _binary_to_ascii

        RSEG  ?CO?TYPEDEF
?SC_0:
        DB  '0' ,'1' ,'2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9'
        DB  'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,000H

; #include <stdio.h>
;
; binary_to_ascii( char value )

        RSEG  ?PR?_binary_to_ascii?TYPEDEF
_binary_to_ascii:
        USING        0
                        ; SOURCE LINE # 16
;---- Variable 'value?040' assigned to Register 'R7' ----
; {
                        ; SOURCE LINE # 17
;
; putchar("0123456789ABCDEF"[ value ] );
                        ; SOURCE LINE # 19
        MOV          A,R7
        RLC          A
        SUBB         A,ACC
        MOV          R6,A
        MOV          A,#LOW (?SC_0)
        ADD          A,R7
        MOV          DPL,A
        MOV          A,#HIGH (?SC_0)
        ADDC         A,R6
        MOV          DPH,A
        CLR          A
        MOVC         A,@A+DPTR
        MOV          R7,A
        LJMP         _putchar
; END OF _binary_to_ascii

;
; }
        END

使用特权

评论回复
5
Karlshen|  楼主 | 2010-2-4 09:37 | 只看该作者
非常感谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

734

帖子

1

粉丝