微机原理课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档