cursor 12,30 ;置显示光标 ;显示提示 mov ah,9
mov dx,offset mess1 int 21h ;输入串 mov al,0 mov ah,10
mov dx,offset mess2 int 21h ;统计 mov cx,0
mov cl,mess2+1 ;输入的个数
mov bx,2 ;从第2个单元存放键入的字母 let1:
mov al,mess2[bx] test al,20h ;区分大小写 jz let2 ;为0,即大写转 inc xiaoxie ;小写加1 jmp let3 let2:
inc daxie ;大写加1 let3: inc bx loop let1
windows 8,30,15,60,27h ;窗口内上卷 cursor 14,30 ;在16行30列显示 add xiaoxie,30h
displ xiaoxie ;显示小写个数
windows 8,30,15,60,27h ;窗口内上卷 add daxie,30h
displ daxie ;显示大写个数 out1: mov ah,4ch int 21h end start
37 编写对键盘输入一段英文的操作计时的程序。
查看正确答案 程序如下: include 9-4.mac .model small .data
letter1 db 'Time start= ','$' letter2 db 'Time end = ','$' letter3 db 'Time total= ','$' input db 100,102 dup(?) hour db ? minutes db ? seconds db ? persec db ? cont db 0 .code start:
mov ax,@data mov ds,ax clearsc ;清屏 cursor 2,50 ;置光标 mov ah,9
mov dx,offset letter1 ;显示串1 int 21h sss:
;读时间并显示
mov ah,2ch ;CH=小时,CL=分,DH=秒,DL=百分秒 int 21h mov bx,0 mov bl,ch
call disp_2_10 ;显示小时 displ ':' ;显示: mov bx,0 mov bl,cl
call disp_2_10 ;分 displ ':' ;显示: mov bx,0 mov bl,dh
call disp_2_10 ;秒 displ ':' ;显示: mov bx,0 mov bl,dl
call disp_2_10 ;百分秒 sub ch,hour ;计算时间差 sub cl,minutes sub dh,seconds sub dl,persec
mov hour,ch ;保存时间差 mov minutes,cl mov seconds,dh mov persec,dl inc cont
cmp cont,2 ;显示2次时间 jz out1
cursor 7,10 ;置输入光标 mov dx,offset input ;键盘输入 mov ah,10 int 21h
cursor 3,50 ;置光标 ;显示串2 mov ah,9
mov dx,offset letter2 int 21h jmp sss out1:
cursor 4,50 ;置光标 mov ah,9
mov dx,offset letter3 ;显示串3 int 21h ;显示时间差 mov cx,3
mov si,offset hour mov bx,0 www:
mov bl,[si] ;取出时、分、秒
call disp_2_10 ;3次调用 displ ':' ;显示: inc si loop www mov ah,4ch int 21h
;子程序。二-十进制数转换。bx值用十进制显示。 disp_2_10 proc store_ss ;保护现场 mov ax,bx ;bx传参 mov cx,0
mov bx,10 ;将ax变为十进制数 let1: mov dx,0
inc cx ;统计余数个数 idiv bx
push dx ;保存余数 cmp ax,0 jnz let1 let2: ;显示结果 pop ax ;将余数弹入ax add ax,0030h ;调整为ascii码 mov dl,al mov ah,2 int 21h loop let2
restore_ss ;恢复现场 ret
disp_2_10 endp end start
38 编写读取时钟计数器的值,经过变换产生百位以内随机数的程序。 查看正确答案
程序如下: include 9-4.mac .model small
.data
letter1 db 'Time start= ','$' letter2 db 'Time end = ','$' letter3 db 'Time total= ','$' input db 100,102 dup(?) hour db ? minutes db ? seconds db ? persec db ? cont db 0 .code
start: mov ax,@data mov ds,ax clearsc ;清屏 cursor 2,50 ;置光标 mov ah,9
mov dx,offset letter1 ;显示串1 int 21h
sss: ;读时间并显示
mov ah,2ch ;CH=小时,CL=分,DH=秒,DL=百分秒 int 21h mov bx,0 mov bl,ch
call disp_2_10 ;显示小时 displ ':' ;显示: mov bx,0 mov bl,cl
call disp_2_10 ;分 displ ':' ;显示: mov bx,0 mov bl,dh
call disp_2_10 ;秒 displ ':' ;显示: mov bx,0 mov bl,dl
call disp_2_10 ;百分秒 sub ch,hour ;计算时间差