5.1 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序用大写字母显示这三个字符。 【解】:MAIN PROC FAR start: push ds sub ax,ax push ax input: mov ah,7H int 21H cmpe: cmp al,20H JE exit cmp al,61H JL input cmp al,7AH JG input print: sub al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H ;输出换行回车 mov dl,0AH mov ah,02H int 21H jmp input exit : ret MAIN ENDP END start 5.2 将AX 寄存器中的16 位数分成4 组,每组4 位,然后把这4 组数分别放在AL、BL、CL 和DL 中。 【解】:DB 4 dup(?) .stack 100H .code MAIN PROC FAR start: push ds and ax,00H push ax mov ax,1234H mov cx,04H mov si,00H lop: push cx mov cl,04H rol ax,cl push ax and al,0FH mov BYTE PTR x[si],al pop ax pop cx add si,2 Loop lop mov al,[X] mov bl,[X+2] mov cl,[X+4] mov dl,[X+6] print: mov ah,02H int 21H mov dl,al mov ah,02H int 21H mov dl,bl mov ah,02H int 21H mov dl,cl mov ah,02H int 21H exit: ret MAIN ENDP END start 5.3 试编写一程序,要求比较两个字符串STRING1 和STRING2 所含字符是否相同,若相同则显示MATCH,若不相同则显示NO MATCH。 【解】:data segment string1 db "111111111",13,10,"$" string2 db "222222222",13,10,"$" inf1 db "match!",13,10,"$" inf2 db "no match!",13,10,"$" data ends code segment main proc far assume ds:data,cs:code,es:code start: push ds mov ax,0 push ax mov ax,data mov ds,ax mov es,ax lea si,string1 lea di,string2 mov cx,9 repz cmpsb jz match lea dx,inf2 jmp disp match:lea dx,inf1 disp :mov ah,09 int 21h ret main endp code ends end start 5.4 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N 次(响铃的ASCII 码为07H)。 【解】:main proc far start: push ds sub ax,ax push ax input: mov ah,01H int 21H cmp al,20H je exit cmp al,30H jle input cmp al,3AH j...