一、实验目的:
1、掌握分支程序与循环程序设计与调试方法
2、掌握转移类指令的应用方法
二、实验内容:
1.编程实现如下功能:
设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小排列的程序。
2.编程实现如下功能:
从键盘输入不多于10个字符,查找其中是否有字符“$”,若有则显示“OK!”,否则显示”NO!”。
三、实验代码:
实验内容1代码:
;1.编程实现如下功能:
;设有3个单字节无符号数存放在BUF开始的缓冲区中,
;编写一个能将它们从大到小排列的程序。
DATAS SEGMENT
IBUF DB 3, 1, 2 ;BUF 中有3个无符号字节
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;IBUF中的三个字节加载到寄存器
MOV AL, [IBUF]
MOV BL, [IBUF + 1]
MOV CL, [IBUF + 2]
;从大到小排序
CMP AL, BL ;比较1、2数
JAE XCHG1 ;当1>=2时,跳转
XCHG AL, BL ;否则,交换1、2数
XCHG1:
CMP AL, CL ;比较1、3数
JAE XCHG2 ;当1>=3时,跳转
XCHG AL, CL ;否则,交换1、3数
XCHG2:
CMP BL, CL ;比较1、3数
JAE XCHG3 ;当2>=3时,跳转
XCHG BL, CL ;否则,交换2、3数
XCHG3:
; 退出程序
MOV AH, 4CH
INT 21H
CODES ENDS
END START
实验内容2代码:
;2.编程实现如下功能:
;从键盘输入不多于10个字符,查找其中是否有字符“$”,
;若有则显示“OK!”,否则显示”NO!”。
DATAS SEGMENT
IBUF DB 20,0,11 DUP(0) ; 缓冲区,允许输入不多于10个字符
OKshuchu DB'OK!$'
NOshuchu DB'NO!$'
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS, SS:STACKS
START:
MOV AX, DATAS
MOV DS, AX
;从键盘输入不多于10个字符到IBUF
MOV DX, OFFSET IBUF
MOV AH, 10
INT 21H
;查找字符"$"
MOV SI, 2 ;控制从第2个地址开始,前两个单元存数据大小和实际大小
MOV CL, [IBUF+1] ;控制计数值
Search:
CMP IBUF[SI], '$'
JE Foundok ;如果相等,跳转到输出OK!
INC SI ;否则,指针+1
LOOP Search ;继续搜索
JMP NotFound ;如果一直没有跳转,直接输出NO!
Foundok:
; 换行
MOV AH, 02H
MOV DL, 0DH ; 回车
INT 21H
MOV DL, 0AH ; 换行
INT 21H
; 显示 "OK!" 9号功能调用
MOV DX, OFFSET OKshuchu
MOV AH, 09H
INT 21H
JMP EndProgram ;跳转到程序结束
NotFound:
; 换行
MOV AH, 02H
MOV DL, 0DH ; 回车
INT 21H
MOV DL, 0AH ; 换行
INT 21H
; 显示 "NO!" 9号功能调用
MOV DX, OFFSET NOshuchu
MOV AH, 09H
INT 21H
EndProgram:
; 退出程序
MOV AH, 4CH
INT 21H
CODES ENDS
END START
四、程序流程图:
实验内容1:
实验内容2:
五、实验结果:
实验内容1结果:
刚开始AL,BL,CL的值依次为:3,1,2
排列之后AL,BL,CL的值依次为:3,2,1。在寄存器中进行观察AL,BL,CL的值情况。
实验内容2结果:
实验结果1:
在下面的字符检测中,不含有$符号,输出结果NO!,实验结果正确。
实验结果2:
在下面的字符检测中,含有$符号,输出结果OK!,实验结果正确。
实验结果3:
在下面的字符检测中,含有
符号,并且
符号,并且
符号,并且符号出现在字符中间,输出结果OK!,实验结果正确。
实验结果4:
在下面的字符检测中,含有
符号,共输入
10
个字符,并且
符号,共输入10个字符,并且
符号,共输入10个字符,并且符号出现在字符最前面,输出结果OK!,实验结果正确。
实验结果5:
在下面的字符检测中,含有
符号,共输入
10
个字符,并且
符号,共输入10个字符,并且
符号,共输入10个字符,并且符号出现在字符最后面,输出结果OK! 实验结果正确。