;---------------------软中断处理程序---------------------
.model small
cr equ 0dh ;定义回车键
.data
mimatab db '7846302951' ;预定义置换密码表
keybuff db 21 dup('$') ;预留20位密码缓冲区
.code
public int65h
int65h proc far ;保护现场
push ax
push bx
push cx
push si
lea bx, mimatab
lea si, keybuff
mov cx, 20
next:
mov ah, 1
int 21h ;输入一个字符
cmp al, cr ;检测是否是一个回车符
jz exit ;是则跳转
and al, 0fh ;不是则将数字字符转换为相应的数字
xlat mimatab ;明码转换为密码
mov [si], al ;保存一位密码
inc si
loop next ;不满20位则转下一位密码输入
exit:
pop si
pop cx
pop bx
pop ax
iret
int65h endp ;中断返回
;---------------------主程序------------------------------
;extrn int65h: far
;.model small
.stack 64
.code
.startup
mov ax, seg int65h ;取中断处理程序的段地址
mov ds, ax
mov dx, offset int65h ;取中断处理程序的偏移地址
mov ah, 25h
mov al, 65h
int 21h ;填写软中断号65h的中断向量
int 65h ;调用65h软中断
.exit 0
end