首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

小弟无能 跪求各位指点 (附小弟我学的是C++)

2012-02-05 
小弟无能跪求各位大虾指点(附我学的是C++)数字加密:要求。加密0~9.设0.1.2.3.4.5.6.7.8.9对应的密码为9.0.8

小弟无能 跪求各位大虾指点 (附我学的是C++)
数字加密:
要求。加密   0~9.设0.1.2.3.4.5.6.7.8.9对应的密码为9.0.8.2.7.4.6.3.1.5.键盘输入一个四位数。要求马上输出其对应的密码。如:输入4925.则输出:7584

[解决办法]
这跟汇编没什么关系吧 很简单 几分钟写的 没考虑效率 输入为四位(不足四位 高位补9)
int main(int argc, char* argv[])
{//0.1.2.3.4.5.6.7.8.9对应的密码为9.0.8.2.7.4.6.3.1.5
int aa,n[4],num;

cin> > aa;
n[0]=aa%10;
n[1]=aa/10%10;
n[2]=aa/100%10;
n[3]=aa/1000;

for(int i=0;i <=3;i++)
{
num=n[i];
switch(num)
{
case 0:n[i]=9;break;
case 1:n[i]=0;break;
case 2:n[i]=8;break;
case 3:n[i]=2;break;
case 4:n[i]=7;break;
case 5:n[i]=4;break;
case 6:n[i]=6;break;
case 7:n[i]=9;break;
case 8:n[i]=1;break;
case 9:n[i]=5;break;
default: cout < < "错误 ";
}
}
aa=n[0]+10*n[1]+100*n[2]+1000*n[3];
cout < < "密码为: ";
cout < <aa;
return 0;
}

[解决办法]
按您的要求 又写拉一遍 应该没问题 我想分都想疯拉
data segment use16
buf db 10
db ?
db 10 dup(?), '$ '

tab dw t0
dw t1
dw t2
dw t3
dw t4
dw t5
dw t6
dw t7
dw t8
dw t9
data ends
code segment use16
assume cs:code,ds:data
beg:mov ax,data
mov ds,ax
mov ah,0Ah
mov dx,offset buf
int 21h
lea bx,buf+1
mov cx,4
push bx
loo:pop bx
inc bx
sub byte ptr[bx],30h
push bx
mov bl ,byte ptr[bx]
mov bh,0
add bx,bx
mov si,offset tab
dec cx
cmp cx,0
je looo
jmp [bx+si]
looo: mov dx,offset buf+2
mov ah,09h
int 21h

;0.1.2.3.4.5.6.7.8.9对应的密码为9.0.8.2.7.4.6.3.1.5
t0: mov byte ptr[bx],39h
jmp loo
t1: mov byte ptr[bx],30h
jmp loo
t2: mov byte ptr[bx],38h
jmp loo
t3: mov byte ptr[bx],32h
jmp loo
t4: mov byte ptr[bx],37h
jmp loo
t5: mov byte ptr[bx],34h
jmp loo
t6: mov byte ptr[bx],36h
jmp loo
t7: mov byte ptr[bx],33h
jmp loo
t8: mov byte ptr[bx],31h
jmp loo
t9: mov byte ptr[bx],35h
jmp loo
code ends
end beg

热点排行