我目前正在编写一个程序,它接受密码并根据某些标准检查强度,我无法确定我的逻辑是否正确检查大写字母。
mov cx, count
mov bx, OFFSET pw
upper_loop:
mov ax, [bx]
cmp dx, count
je upper_msg ; prompt user that no uppercase letter was entered
sub ax, 'A'
cmp ax, 'Z' - 'A'
jle lower_check
inc bx
inc dx
jmp upper_loop
答案 0 :(得分:2)
您的程序不正确,当密码包含例如' @'时可能会出现误报。 (0x40)而不是大写字母。减去' A'来自' @'产生-1(0xFF), 低于' Z' A' A' (0x19),所以你跳转到lower_check虽然没有遇到大写字母。我的主张是避免将字符作为带符号的数字进行比较:
mov cx, count
mov si, OFFSET pw
cld
upper_loop:
lodsb
cmp al,'A'
jb not_u
cmp al,'Z'
jbe lower_check ; Break if at least one uppercase letter is present.
not_u:loop upper_loop
upper_msg ; prompt user that no uppercase letter was entered
答案 1 :(得分:1)
坚持你的例子,这就是结果:
@page {
margin: 7mm 4.2mm 5mm;
}