汇编程序 十六进制数转换成ASCII码

汇编程序 十六进制数转换成ASCII码,第1张

举个例子,6CH,转换成ASCII码,是以十六进制形式显示:6CH,还是以十进制形式显示:108?

本程序通过编译,运行正确

Code Segment

Assume CS:Code,DS:Code

-----------------------------------------

功能:显示指定地址(Str_Addr)的字符串

入口:

Str_Addr=字符串地址(要求在数据段)

用法: Output Str_Addr

用法举例:Output PromptStr

Output MACRO Str_Addr

lea dx,Str_Addr

mov ah,9

int 21h

EndM

-----------------------------------------

功能:把AL中的二进制无符号数转换成显式的十进制ASCII

入口:AL=二进制数;di=转换后的ASCII保存地址

出口:无

HEXASC_Dec Proc Near

push si

push cx

push bx

push di

mov bl,10

xor cx,cx

lea di,@@Temp_Save[3]

cld

@@Divide: xor ah,ah

div bl

or ah,30h

mov [di],ah

dec di

inc cx

test al,0ffh

jnz @@Divide

push di

pop si

inc si

pop di

pop bx

rep movsb

pop cx

pop si

ret

@@Temp_Save db 4 dup(?)

HEXASC_Dec EndP

-----------------------------------------

功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码

入口:AL

出口:AL=转换后的ASCII码

AL_ASCII Proc Near

cmp al,10 AL<10?

jb @@To_ASCII AL<10,按数字处理

add al,7 AL>=10,按大写字母处理

@@To_ASCII: add al,'0' 转换成相应的数字或大写字母

ret

AL_ASCII EndP

-----------------------------------------

功能:将AL中的字节数转换成十六进制显示的ASCII码

入口:AL

出口:AX=转换后的ASCII码

HEXASC_Hex Proc Near

push cx

mov cx,4

xor ah,ah 将AH置0

shl ax,cl 将AX左移4位

shr al,cl 将AL右移4位

xchg ah,al

call AL_ASCII 调用子程序,将AL中的值转换成相应的ASCII码

xchg ah,al

call AL_ASCII

xchg ah,al

pop cx

ret

HEXASC_Hex EndP

-----------------------------------------

Translate db '0' 转换方式(默认:十进制数显示;若要十六进制显示,则改为:1)

BUF db 23,35,46,57,68,79,81,98,119,243

Elements EQU ($-BUF)/Type BUF 元素个数

Start: push cs

pop ds

push cs

pop es 使数据段、附加段与代码段同段

cld

lea si,BUF

lea di,Temp_STr

mov cx,Elements

HEX_ASCII: lodsb

.IF Translate == '0'

call HEXASC_Dec

.ELSE

call HEXASC_Hex

stosw

mov al,'H'

stosb

.ENDIF

mov al,','

stosb

loop HEX_ASCII

dec di

mov al,'$'

stosb

Output Temp_STr

Exit_Proc: mov ah,4ch 结束程序

int 21h

Temp_STr:

Code ENDS

END Start 编译到此结束

-----------------------------------------

ADD AL,90H

DAA

ADD AL,40H

DAA

十进制数加调整指令DAA(Decimal Adjust After Addition)

该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。

其调整规则如下:

* 如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;

* 如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;

、如果以上两点都不成立,则,清除标志位AF和CF。

经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。

有两种方法可以实现:

转置矩阵

B

=

A'

通用方法:reshape()函数

示例如下:

说明:reshape(A,m,n)

表示将矩阵A变换为m行n列的矩阵,通常用于矩阵形状的改变,例如下面代码将原来的1行4列矩阵转换为2行2列矩阵:

用MATLAB

实现傅里叶变换:

用户任意输入一个函数,然后,输出函数的傅里叶变换函数,然后输出振幅频率

x=sin(2*pi*t)

%任意输入一个函数。

y=fft(x)

%傅里叶变换函数。

plot(abs(y))

%振幅频率。

函数(function)表示每个输入值对应唯一输出值的一种对应关系。这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。函数f中对应输入值的输出值x的标准符号为f(x)。包含某个函数所有的输入值的集合被称作这个函数的定义域,包含所有的输出值的集合被称作值域。若先定义映射的概念,可以简单定义函数为,定义在非空数集之间的映射称为函数。

傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。

1、首先,定义两个字符变量z和Z,用以保存转换的字符。

2、接着,定义一个整型变量n,保存用来转换的ASCII码。

3、把n的值赋给变量z,实现字符的转换。

4、输出窗口中,输出将ASCII码转换为的字符。

5、给变量n重新赋值,其值为大写字母的ASCII码。

6、将ASCII码转换为对应的大写英文字母,并在输出窗口中输出。

7、运行程序,代码中输入的ASCII码,成功转换为相应的大小写字母。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11988278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存