|
1 分析下面的程序,画出堆栈最满时各单元的地址及内容。
;********************************************************
s_seg segment at 1000h ;define stack segment
dw 200 dup(?)
tos label word
s_seg end
;********************************************************
c_seg segment ;define code segment
assume cs:c_seg,ss:s_seg
mov ax,s_seg
mov ss,ax
mov sp,offset tos
;
push ds
mov ax,0
push ax
...
push t_addr
push ax
pushf
...
popf
pop ax
pop t_addr
ret
c_seg ends ;end of code segment
;*************************************************
end c_seg ;end of assembly
2 下面是用STRUC伪操作定义的参数表NAMELIST,
(1) 请用结构预置语句分配此结构的存储区;
(2) 编写一段程序,从键盘输入字符(用DOS功能调用)存入结构中,然后将输入的字符送入DISPFILE单元中。
NAMELIST STRUC
MAXLEN DB 100
ACTLEN DB ?
NAMEIN DB 100 DUP(?)
NAMELIST ENDS
3 写一段子程序SKIPLINES,完成输出空行的功能。空行的行数在AX寄存器中。
4 设有10个学生的成绩分别是76,69,64,90,73,88,99,63,100和80分。试编制一个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中。
5 编写一个有主程序和子程序结构的程序模块。子程序的参数是一个N字节数组的首地址TABLE,数N及字符CHAR。要求在N 字节数组中查找字符CHAR,并记录该字符的出现次数。主程序要求从键盘接收一串字符以建立字节数组TABLE,并显示字符CHAR以及它在TABLE数组中出现的次数(为简化起见,假设出现次数<=15,可以用十六进制形式把它显示出来)。
|