要求: 已知某密码由英文字母A、B、C……Z组成且以ASCII码形式存放在以CIPHER为首地址的存储区中,试统计各字母在此密码中出现的次数并依次存入以CHAR为首地址的26个字节中,最后将字母出现的次数以十六进制形式显示出来(设出现的次数≤255),显示格式为: A XXH B XXH Z XXH 要求: 将“8位二进制数转换成十六进制数并显示出来”的功能用子程序完成。 program: jidseg segmentchipher db 'AASDFGHJKLMNBVCXZQWERTYUIOPJSDLFSDLFSDJFOFWOOEWJWTRETJGFVNLFLFJLWUIEWWFSFSFKF'len = $-chipherchar db 26 dup(0)dseg endscseg segment assume cs:cseg ,ds:dsegstart: mov ax,dseg mov ds,ax mov si,0next: mov bl,chipher[si] mov bh,0 inc si cmp si,len ja count sub bl,'A' add char[bx],1 jmp next count: mov si,0count1: mov bl,char[si] mov bh,0 inc si cmp si,25 ja done mov dx,si add dx,40h mov ah,2 int 21h mov dl,':' mov ah,2 int 21h call deal jmp count1 done: mov ah,4ch int 21h deal proc push ax push bx push cx push dx mov dx,0 mov di,2 mov cl,4 sign: shl bx,cl cmp di,0 je exit dec di cmp bh,9 ja word add bh,30h mov dl,bh mov bh,0 mov ah,2 int 21h jmp sign word: mov dl,bh add dl,37h mov bh,0 mov ah,2 int 21h jmp sign exit: mov dl,'h' mov ah,2 int 21h mov dl,' ' mov ah,2 int 21h pop dx pop cx pop bx pop ax ret deal endpcseg ends end start

评论