实验五 分支程序设计1(2学时)
【实验目的】
1、熟练掌握逻辑运算和转移指令 1) 逻辑运算指令
2)标号和无条件转移指令 3)比较指令和条件转移指令
2、掌握分支程序设计的原理和方法 , 重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧
【实验内容】
1、编制程序实现根据各控制变量(数字1---4)和各分支之间的关系,把程序分成4个分支段,各分支段的起始标号为A1,A2,A3,A4.每个分支段的功能为显示一个字符串。如果输入的字符不是1---4,则显示出错误提示字符串。 DATAS SEGMENT
tab1 db 'output data1$';此处输入数据段代码 tab2 db 'output data2$' tab3 db 'output data3$' tab4 db 'output data4$' err db 'err$' DATAS ENDS
STACKS SEGMENT
db 100 dup(0) ;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
mov ah,1 ;此处输入代码据段代码 int 21h cmp al,'1' jz a1
cmp al,'2' jz a2
cmp al,'3' jz a3
25
cmp al,'4' jz a4
lea dx,err mov ah,9 int 21h jmp exit
a1: lea dx,tab1 mov ah,9 int 21h jmp exit
a2: lea dx,tab2 mov ah,9 int 21h jmp exit
a3: lea dx,tab3 mov ah,9 int 21h jmp exit
a4: lea dx,tab4 mov ah,9 int 21h
exit: MOV AH,4CH INT 21H CODES ENDS
END START 运行结果
1 output data1
2、编制程序实现如下操作:
设有 10 个学生成绩,分别统计低于 60 分、 60 ~ 69 分、 70 ~ 79 分、 80 ~ 89 分、 90 ~99 分及 100 分的人数,并存放于 S5 、 S6 、 S7 、 S8 、 S9 、 S10 单元中。
执行程序后,将结果分别填入下列
N(总人数 ) S5 S6 S7 S8 S9 S10 DATAS SEGMENT
tab db 45,85,96,65,76,84,55,69,79,88 ;此处输入数据段代码 s5 db 0 s6 db 0 s7 db 0 s8 db 0
26
s9 db 0 s10 db 0
buf db 'output data:$' DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
lea si,tab;此处输入代码据段代码 mov cx,10
lopa: mov al,[si] cmp al,60 jl a5
cmp al,70 jl a6
cmp al,80 jl a7
cmp al,90 jl a8
cmp al,100 jz a10 inc s9 jmp exit a10:inc s10 jmp exit a8: inc s8 jmp exit a7: inc s7 jmp exit a6: inc s6 jmp exit a5: inc s5 jmp exit exit:inc si dec cx jnz lopa lea dx,buf mov ah, 9
27
int 21h lea si,s5 mov cx,6 lopb: mov al,[si] mov ah,0 mov dl,10
div dl;(al)=十位 (ah)=个位 mov bh,ah or al,30h mov dl,al mov ah,2 int 21h
or bh,30h mov dl,bh mov ah,2 int 21h
mov dl,' ' mov ah,2 int 21h inc si dec cx jnz lopb MOV AH,4CH INT 21H CODES ENDS
END START 运行结果
output data: 02 02 02 03 01 00
3、编制程序实现从键盘上键入0至9中任一自然数X,求其平方值。若输入的字符不是0至9中的数字,则显示错误,并要求重新输入。要求有交互界面: data segment
tab db 0,1,4,9,16,25,36,49,64,81
input db ‘please input x(0--9)’,’$’ data ends
调试运行时,请采用两种方法:
(1)调用DEBUG程序查看运行结果并记录每步运行结果; (2)通过查表转换求平方值在屏幕上显示出来。 DATAS SEGMENT
tab db 0,1,4,9,16,25,36,49,64,81 input db 'please input x(0--9)','$'
x db ?
28