去掉了那个中断部分。
; 本程序通过编译,运行正确
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
; -----------------------------------------
Encode db '7846302951'
Prompt_Str1 db 'Please input the orical code: $'
Prompt_Str2 db 7,13,10,13,10,'The encode: $'
Prompt_Str3 db 13,10,13,10,'Please record the encode and than press any key to continue...$'
String db 20,?,20 dup(?) ;明码输入缓冲区
Start: push cs
pop ds
push cs
pop es
Output Prompt_Str1 ;提示输入明码
cld
lea di,String ;明码字符串地址
mov cx,20 ;明码数字个数,可以不到20个数字,回车键结束明码输入
Read_Encode:mov ah,1
int 21h
cmp al,13 ;回车?
jz Disp_Encode
cmp al,'0'
jb Read_Encode
cmp al,'9'
ja Read_Encode
stosb
loop Read_Encode
Disp_Encode:mov cx,di
sub cx,offset String ;实际输入的明码数字个数
lea si,String ;明码字符串地址
lea bx,Encode ;密码地址
Encoding: lodsb ;读入1位明码
and al,0fh
xlat ;查表,取得对应的密码
mov [si-1],al ;写密码
loop Encoding
mov byte ptr [si],'$' ;显示字符串采用DOS调用,9号功能,要求字符串以“$”结尾
Output Prompt_Str2 ;提示显示密码
Output String ;显示密码
Output Prompt_Str3 ;提示用户记录密码
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
补充回答:未知楼主要怎样的原创,这个是我百分之百的原创。此前提供的连接,也是我百分之百的原创。不知楼主用什么方法来判断回答者的答案是否原创。