微机原理课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机课程设
计报告
班级:
姓名:
学号:
任务一:
1、目的:字符串匹配的设计
要求:为掌握提示信息的设置方法及读取键入信息的方法。编写程序实现两个字符串比较,如相同,则显示“MATCH”;否则,显示“NO MATCH”。
2、流程图
3、源程序:
DATAS SEGMENT
s1 db'please input the first string:','$'
st1 db 100
db?
db 100 dup(?)
s2 db 0ah,'plaese input the second string:','$'
st2 db 100
db?
db 100 dup(?)
s3 db 0ah,'matah','$'
s4 db 0ah,'no match','$'
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov dx,offset s1 ;显示提示信息1
mov ah,9h
int 21h
mov dx,offset st1 ;接收键入的字符串1
mov ah,0ah
int 21h
mov dx,offset s2 ; 显示提示信息2
mov ah,9h
int 21h
mov dx,offset st2 ;接收键入的字符串2
mov ah,0ah
int 21h
mov si,offset st1 ;字符串1的地址送给SI
mov di,offset st2 ; 字符串2的地址送给DI
mov ax,0
lp1: mov bl,[si+1] ; 字符串1的字符数送给bl cmp bl,[di+1] ;字符串2的字符数与字符串1相比较
jnz lp4 ;不等转lp4
mov al,[si+1]
mov cx,ax ; 给cx赋字符串1的字符数
lp2: mov bl,[si+2] ; 字符串1的第一个字符在字符串2中匹配
cmp bl,[di+2]
jnz lp4
inc si
inc di
loop lp2 ;循环cx内容减1,cx不等于0,继续循环,跳转lp2
lp3: mov dx,offset s3
mov ah,9h
int 21h
jmp next
lp4: mov dx,offset s4
mov ah,9h
int 21h
;此处输入代码段代码
next: MOV AH,4CH
INT 21H
CODES ENDS
END START
4、结果:
5、心得
要先比较字符串的长度,前面要先分别定义match和nomatch,并且应该保留足够的字节空间。
任务二:
1、目的:字符和数据的显示设计
要求:为掌握字符和数据的显示方法。编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,在接受字符。如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。
2、流程图
3、源程序:
DATA SEGMENT
DATA1 DB 40 DUP(?)
DISPP1 DB'input string,the end flag is CR,quit with ctrl-c',0DH,0AH,'$' DISPP2 DB 0DH,0AH,'$'
DISPP3 DB'the input string is:','$'
DATA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA;规定CS,DS的内容
START: MOV AX,DATA
MOV DS,AX ;DS初始化为DATA
L5: MOV SI,00H
MOV CL,00H ;寄存器清零
MOV BX,OFFSET DATA1 ;把DATA1偏移地址放入BX中
LEA DX,DISPP1
MOV AH,9
INT 21H;调用int 21的09功能,输出字符串
L1: MOV AH,1
INT 21H;从键盘输入字符,放入AH中
CMP AL,03H
JZ L4 ;如果是结束字符,则程序结束并返回
CMP AL,0DH
JZ L3 ;如果输入是回车,则转到L3程序
MOV [BX+SI],AL ;AL中值放入BX中,SI所指向的地址中
INC SI;SI自加1
CMP AL,30H
JNB kk
JMP L1
kk: CMP AL,39H
JNA L2
JMP L1
L2: INC CL
JMP L1 ;如果输入不在'1'到'9'范围内,则转到L1程序
L3: LEA DX,DISPP2
MOV AH,9
INT 21H;调用int 21的09功能,输出字符串
LEA DX,DISPP3 ;取DISSP3首地址送到DX中
MOV AH,9
INT 21H ;调用int 21的09功能,输出字符串
ADD CL,30H
MOV [BX+SI+1],CL;AL中值放入BX中,SI所指向的地址中
MOV AL,0AH