rep movsb
2、编写指令序列,完成用空格符(20H)清除某一字符区的工作,字符区首地址为ARRAY,其长度为COUNT,ARRAY和COUNT均为字节存储单元。
lea si,ARRAY mov al,20h mov cx,10 cld
rep stosb
3.编写一个显示字符串的宏定义PRINT, 字符串以”$”作为结束符号,字符串首地址STRADDR为变元。
PRINT macro STRADDR lea dx,STRADDR mov ah,09h int 21h endm
4、编写子程序CLEAR实现清除屏幕的功能。(课件第九章有)
mov ah,06h mov al,0 mov bh,07h mov ch,0 mov cl,0 mov dh,24 mov dl,79
int 10h
5、编写指令把12行0列到22行79列的屏面清除。
mov ah,07h mov al,0 mov bh,70h mov ch,12 mov cl,0 mov dh,22
mov dl,79 int 10h
6. 写出采用位触发方式控制发声的子程序SOUND.
参数: BX:发声频率,控制脉宽 CX: 发声时间,控制音长。
Mov bx,100 In al,61h And al,11111100b sound:xor al,2 Out 61h,al Mov cx,140h Wait:loop wait
Dec bx Jnz sound
7、 已知在内存数据段中GRA开始单元连续存放着10个学生的成绩,试编程实现以下功能:计算平均成绩(只取整数部分)存放在内存单元AVG中。 DSG SEGMENT
GRA DB 90,58,70,80,68,98,66,83,96,72 AVG DB ? DSG ENDS
mov ax,DSG mov ds,ax mov dx,0 mov cx,10 lea si,GRA next:mov al,[si] cbw
add dx,ax inc si
loop next mov ax,dx mov bl,10 div bl
mov [avg],al mov ah,4ch int 21h
8、已知在内存数据段中STR开始单元连续存放着10个大小写字母,试编程实现以下功能:将10个字母中的小写字母全部转换为大写字母。 DSG SEGMENT
STR DB “BbcDeFgHIj” DSG ENDS
mov ax,DSG mov ds,ax lea si,STR next:mov al,[si] cmp al,'Z' jbe exit sub al,20h mov [si],al exit:inc si loop next mov ah,4ch int 21h