[汇编]字符的存储方式理解实现字符ASCII查询

2025-04-06 09:03:23

然而,在进行编程的前缚聘遥堆夕,我们需要了解所涉及的知识:1、在汇编程序中,我们要定义输入自定义的字符,一般都讵畿缤耒会在段定义中定义DB类(或DW)的一段内存单元来预留需存放的字符。其中,定义用到DB,那么限定我们使用的寄存器也需8位2、程序中,需要用到DOS系统功能调用,这里只提用到的3个,若深入学习,请自行查询资料。(1) 单字符输入(功能调用号AH=01H),使用实例:

mov ah,01H+=L^h9Fint 21H

cEPqcy *(2) 单字符输入(功能调用号AH=02H),使用实例:H|d"45J_

其中DIY为段定义中定义的变量>a8'MKF^wm&:%{`mov dl,OFFSET DIY0{47TX*YXmov ah,02H@$|bMH*1:int 21Hj@jUuYuDgl@aWd0e]或者h`MTB!olea dx,DIYv==/tr)mov ah,02H(5=B^9{Rint 21H

P?`a{sl.(3) 字符串输出(功能调用号AH=09H),使用实例:yRldPk_

data segmentz7O$o/E-*DIY db 'Hellow World! $' ;字符串需要$结束lD1m<ACdata segment/,^AG2]( fN?mQ50o~Cmov dl,OFFSET DIYS,qEKWyLdmov ah,09Hp']oy;tint 21H

YyD0g9{Ou2p^:C(3、字符在寄存器中,是以16进制的ASCII存放的。,uCgC4EP3|1v)Eyz^Rm2$f9在本程序中,我们使用DIY 的除法方式,来拆分ASCII的十位和个位,商为十位存放于AL中,余数为个位存放于AH中。且得到的商和余数都为16H进制数。a/lTQj]AC\gKJW^]y@例:a --> 73H --> 07H和03H,其中07H与03H为ASCII值,在ASCII表中对应的值不相符或者不存在。Amj'$G|+hjOx&]{通过了解基本所涉及的知识,我们通过分析程序来体验学习:Ws:MbZyrvW`[CEm^X

复制代码

assume cs:code,ds:data

data segment

SGWORD DB 8

TIP1 DB 'Please any key,then entering to continue:$'

TIP2 DB '',0AH,0DH,'The ASCII of this word is:$'

data ends

code segment

start:

mov ax,data

mov ds,ax

mov dl,OFFSET TIP1 ;Print the TIP1

mov ah,09H

int 21H

mov ah,01H ;Enter a single word

int 21H

mov cl,al ;Saving the ASCII of word

mov dl,OFFSET TIP2 ;Print the TIP2

mov ah,09H

int 21H

ASCII_P:

mov al,cl

mov dl,16 ;m%d

div dl

mov cl,ah ;The AH saves Latter of ASCII

and al,0FH ;The AL saves Pri of ASCII

mov dl,al

or dl,30H

mov ah,02H

int 21H

ASCII_L:

mov dl,cl

or dl,30H

cmp dl,3AH

jb NOADD

add dl,07H

NOADD:

mov ah,02H

int 21H

mov ah,4CH

int 21H

code ends

END start

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢