本程序通过编译,运行正确
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码,成功转换为相应的大小写字母。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)