文档详情

第六章nbsp子程序结构.doc

发布:2021-01-22约2.19千字共3页下载文档
文本预览下载声明
第六章 子程序结构 6、写一段子程序SKIPLINES,完成输出空行的功能。空行的行数在AX寄存器中。 答案: SKIPLINES PROC NEAR PUSH CX PUSH DX MOV CX,AX NEXT: MOV AH,2 MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H LOOP NEXT POP DX POP CX RET SKIPLINES ENDP 7、设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序统计60—69分,70—79分,80—89分,90-99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中。 答案: dseg segment num dw 76,69,84,90,73,88,99,63,100,80 n dw 10 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 s10 dw 0 dseg ends code segment main proc far assume cs:code, ds:dseg start: push ds sub ax, ax push ax mov ax, dseg mov ds, ax call sub1 ret main endp sub1 proc near push ax push bx push cx push si mov si, 0 mov cx, n next: mov ax, num[si] mov bx, 10 div bl mov bl, al cbw sub bx, 6 sal bx, 1 inc s6[bx] add si,2 loop next pop si pop cx pop bx pop ax ret sub1 endp code ends end start 8、编写一个有主程序和子程序结构的程序模块,子程序的参数是一个N字节数组的首地址TABLE,数N及字符CHAR。要求在N字节数组中查找字符CHAR,并记录该字符的出现次数。主程序则要求从键盘接收一串字符以建立字节数组TABLE,并逐个显示从键盘输入的每个字符CHAR以及它在TABLE数组中出现的次数。(为简化起见,假设出现次数≤15,可以用十六进制形式把它显示出来 。 答案: data segment maxlen db 40 n db ? table db 40 dup (?) char db a ; 查找字符’a’ even addr dw 3 dup (?) data ends code segment assume cs:code, ds:data main proc far start: push ds mov ax, 0 push ax mov ax, data mov ds, ax lea dx, maxlen mov ah, 0ah int 21h ; 从键盘接收字符串 mov addr, offset table mov addr+2, offset n mov addr+4, offset char mov bx, offset addr ; 通过地址表传送变量地址 call count ; 计算CHAR的出现次数 call display ; 显示 ret main endp count proc near ; count子程序 push si push di push ax push cx mov di, [bx] mov si, [bx+2] mov cl, byte ptr[si] mov ch, 0 mov si, [bx+4] mov al, byte ptr[si] mov bx, 0 again: cmp al, byte ptr[di] jne l1 inc bx l1: inc di loop again pop cx pop ax pop di pop si ret count endp display proc near ; display子程序 call crlf ; 显示回车和换行 mov dl, char mov ah, 2 int 21h mov dl, 20h mov ah, 2 int 21h mov al, bl and al, 0fh add al, 30h cmp al, 3ah jl print add al, 7 pr
显示全部
相似文档