进制转换3例

博客给出三个汇编程序示例。一是输入N个十六进制数据累加,和存于SUM单元,输入非十六进制数结束,再以十六进制输出SUM值;二是同样输入累加,以二进制输出SUM值;三是输入4个十六进制数据,输出对应二进制数。

1、 键盘输入N个十六进制数据,每次一位(0F),将其累加,和存放到SUM单元中;若输入非十六进制数则结束;再将SUM单元的值用十六进制数据换行输出。


data segment
num db ?
adtab dw addr1, addr2, addr4, addr8
tb1 db 'I am student2$'
tb2 db 'You are students3$'
tb4 db 'You are students5$'
tb8 db 'You are students9$'
next db 0dh,0ah,'$'
data ends

code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds, ax

mov ah, 01h
int 21h
sub al, 30h
mov num,al
lea dx, next
mov ah, 09h
int 21h

mov al, num
lea bx, adtab
lop: shr ax, 1
jnc nxt
jmp word ptr [bx]
nxt: add bx, type adtab
jmp lop

addr1: lea dx,tb1
mov ah,09h
int 21h
jmp exit

addr2: lea dx,tb2
mov ah,09h
int 21h
jmp exit

addr4: lea dx,tb4
mov ah,09h
int 21h
jmp exit

addr8: lea dx,tb8
mov ah,09h
int 21h

exit: mov ah,4ch
int 21h
code ends
end start



2、 键盘输入N个十六进制数据,每次一位(0F),将其累加,和存放到SUM单元中;若输入非十六进制数则结束;再将SUM单元的值用二进制数据换行输出。
data segment
num db ?
table db?,?,?,?
next db 0dh,0ah,'$'
count dw 0
data ends

code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds, ax

lop: mov ah, 01h
int 21h
cmp al, 0dh
jz outpush0

cmp al, '0'
jb other
cmp al, '9'
ja other

sub al, 30h
neg al
add al, 30h
mov si, count
mov table[si], al
mov cx, count
add cx, 1
mov count, cx
jmp lop
other:
mov si, count
mov table[si], al
mov cx, count
add cx, 1
mov count, cx
jmp lop

outpush0:
lea dx, next
mov ah, 9
int 21h

mov cx, 0
mov count, cx
mov bx, 4
outpush:
cmp bx, count
jz exit
mov si, count
mov dl, table[si]
mov ah, 2
int 21h
mov cx, count
add cx, 1
mov count, cx
jmp outpush

exit: mov ah,4ch
int 21h
code ends
end start


3、 键盘输入4个十六进制数据,将其对应的二进制数输出。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

data segment
number0 db ?
number1 db ?
tb1 db 0dh,0ah,'jan',0dh,0ah,'$'
tb2 db 0dh,0ah,'fab',0dh,0ah,'$'
tb3 db 0dh,0ah,'mar',0dh,0ah,'$'
tb4 db 0dh,0ah,'apr',0dh,0ah,'$'
tb5 db 0dh,0ah,'may',0dh,0ah,'$'
tb6 db 0dh,0ah,'jun',0dh,0ah,'$'
tb7 db 0dh,0ah,'jly',0dh,0ah,'$'
tb8 db 0dh,0ah,'aug',0dh,0ah,'$'
tb9 db 0dh,0ah,'sep',0dh,0ah,'$'
tb10 db 0dh,0ah,'oct',0dh,0ah,'$'
tb11 db 0dh,0ah,'nov',0dh,0ah,'$'
tb12 db 0dh,0ah,'dec',0dh,0ah,'$'
next db 0dh,0ah,'$'
msgdb'Input a function number(1~12),end with "ENTER":','$'
ErrMsgdb0dh,0ah,'Invalid function number.', 0dh, 0ah,'$'
AddrTbl dw Func0,Func1,Func2,Func3,Func4,Func5,Func6,Func7,Func8,Func9,Func10,Func11
data ends
code segment
assume cs:code, ds:data
start: mov ax,data
mov ds,ax

lea dx, msg
mov ah, 9
int 21h

mov ah, 1
int 21h
mov number0, al
mov ah, 1
int 21h
mov number1, al
mov al, number1
cmp al, 0dh
jz equ1
add al, 10
jmp equal
equ1:
mov al, number0
equal:
cmp al, '0'
jc Error
cmp al, '<'
ja Error
sub al, 30h
mov ah, 0

mov bx, ax
shl ax, 1
mov bx, ax
jmp AddrTbl[bx]
Func0:
lea dx, tb1
jmp Output
Func1:
lea dx, tb2
jmp Output
Func2:
lea dx, tb3
jmp Output
Func3:
lea dx, tb4
jmp Output
Func4:
lea dx, tb5
jmp Output
Func5:
lea dx, tb6
jmp Output
Func6:
lea dx, tb7
jmp Output
Func7:
lea dx, tb8
jmp Output
Func8:
lea dx, tb9
jmp Output
Func9:
lea dx, tb10
jmp Output
Func10:
lea dx, tb11
jmp Output
Func11:
lea dx, tb12
jmp Output
Error:
lea dx, ErrMsg
jmp Output
Output:
mov ah, 9
int 21h
mov ah,4ch
int 21h
code ends
end start

内容概要:本文提出了一种基于融合鱼鹰算法和柯西变异的改进麻雀优化算法(OCSSA),用于优化变分模态分解(VMD)的参数,进而结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)构建OCSSA-VMD-CNN-BILSTM模型,实现对轴承故障的高【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)精度诊断。研究采用西储大学公开的轴承故障数据集进行实验验证,通过优化VMD的模态数和惩罚因子,有效提升了信号分解的准确性与稳定性,随后利用CNN提取故障特征,BiLSTM捕捉时间序列的深层依赖关系,最终实现故障类型的智能识别。该方法在提升故障诊断精度与鲁棒性方面表现出优越性能。; 适合人群:具备一定信号处理、机器学习基础,从事机械故障诊断、智能运维、工业大数据分析等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决传统VMD参数依赖人工经验选取的问题,实现参数自适应优化;②提升复杂工况下滚动轴承早期故障的识别准确率;③为智能制造与预测性维护提供可靠的技术支持。; 阅读建议:建议读者结合Matlab代码实现过程,深入理解OCSSA优化机制、VMD信号分解流程以及CNN-BiLSTM网络架构的设计逻辑,重点关注参数优化与故障分类的联动关系,并可通过更换数据集进一步验证模型泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值