微机原理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;实验一汇编程序、链接程序、编辑程序及调试程序得基本使用方法
;一、实验目得
;1.熟悉在PC机上建立、汇编、连接、调试与运行汇编语言程序得过程。
;2.掌握字符串得复制,并会用各种方法实现。
;3.掌握字符串显示得DOS功能调用。
;二、实验内容及要求
;1.将以符号地址为ARRAY1开始得字符串“请自己定义”复制到ARRAY2开始得存储单元中并显示在屏幕上。
;2、使用三种方法传送:
;(1) 用MOV指令传送
;(2) 用基本串传送指令
;(3) 重复串传送指令
MY_DATA SEGMENT PARA 'DATA';数据段
DISP1 DB 'How are you?',0aH,0DH,'$';
ARRAY1 DB 'DI',41H,'NZI09','$';
ARRAY2 DB 20 dup(0)
MY_DATA ENDs
MY_CODE SEGMENT PARA 'CODE' ;代码段
MY_PROC PROC FAR
ASSUME CS:MY_CODE, DS:MY_DATA
START: MOV AX,MY_DA TA
MOV DS,AX
MOV ES,AX
LEA DX,DISP1;显示提示字符串
MOV AH,09H
INT 21H
;;开始(1) 用MOV指令传送
;LEA SI,ARRAY1;
;LEA DI,ARRAY2;
;MOV CX,09H
LOOP1: ;MOV BH, [SI]
;MOV [DI], BH
;INC SI
;INC DI
;LOOP LOOP1
;;开始(2) 用基本串传送指令
LEA SI,ARRAY1;
LEA DI,ARRAY2;
MOV CX,09H
CLD
LOOP2: MOVSB
LOOP LOOP2
;;开始(3) 重复串传送指令
;LEA SI,ARRAY1;
;LEA DI,ARRAY2;
;MOV CX,09H
;CLD
;REP MOVSB
;将ARRY2中得字符串显示出来,便于判断就是否传送正确。
LEA DX,ARRAY2;显示信息
MOV AH,09H
INT 21H
EXIT: MOV AX,4C00H
INT 21H
MY_PROC ENDp
MY_CODE ENDS
END START
实验二分支程序设计
;一、实验目得
;1.掌握分支程序得设计方法。
;2、掌握提示信息得使用方法及键盘输入得用法。
;3、学会使用字符串比较。
;二、实验内容及要求
;在屏幕上显示“Please input your telephone number:”,根据提示输入8位电话号码,
;屏幕上下一行显示“Please input your ;telephone number again:”,再次输入8位相同电话号码, ;比较两次输入得数据,如果相同则显示“Success!”,
;不相同则显示“Your ;telephone number isn’t match, please try again、”,直到输入正确为止。MY_DATA SEGMENT PARA 'DATA';数据段
;开辟输入缓冲区1,存放第一次输入得8位电话号码。
NUMBER1 DB 9 ;最多可以键入9个字符(包括回车符ODH)
ACTLEN1 DB ? ;实际键入得字符数
CHARS1 DB 9 DUP('A'),0aH,0DH,'$';实际键入得字符从此开始存放,为了显示输入得号码,特别加了字符串结束标志'$'。
;开辟输入缓冲区2,存放第二次输入得8位电话号码。
NUMBER2 DB 9 ;最多可以键入9个字符(包括回车符ODH)
ACTLEN2 DB ? ;实际键入得字符数
CHARS2 DB 9 DUP('A'),0aH,0DH,'$' ;实际键入得字符从此开始存放,为了显示输入得号码,特别加了字符串结束标志'$'。
;定义字符串,作为程序运行中得提示。
DISP1 DB 'Please input your telephone number:',0aH,0DH,'$'
DISP2 DB 'Please input your telephone number again:',0aH,0DH,'$'
RIGHT DB 'Success!',0aH,0DH,'$'
WRONG DB 'Your telephone number isn',27H,'t match, please try again、',0aH,0DH,'$' YourInput DB 'Your input is:','$'
;注意字符串中得“'”要用其ASCII码表示。
MY_DATA ENDs
MY_CODE SEGMENT PARA 'CODE' ;代码段
MY_PROC PROC FAR
ASSUME CS:MY_CODE, DS:MY_DATA
START: MOV AX,MY_DA TA
MOV DS,AX
MOV ES,AX
MOV BL,3 ;允许错误输入得最大次数
LEA DX,DISP1;显示提示字符串
MOV AH,09H
INT 21H
LEA DX,NUMBER1;输入8位电话号码,并放入缓冲区NUMBER1
MOV AH,0AH
INT 21H
LEA DX,YourInput;
MOV AH,09H
INT 21H
LEA DX,CHARS1;显示输入得8位电话号码。
MOV AH,09H
INT 21H
AGAIN: LEA DX,DISP2;显示提示字符串
MOV AH,09H
INT 21H
LEA DX,NUMBER2;再次输入8位电话号码,并放入缓冲区NUMBER2
MOV AH,0AH
INT 21H
LEA DX,YourInput;显示输入得8位电话号码。
MOV AH,09H
INT 21H
LEA DX,CHARS2;显示输入得8位电话号码。
MOV AH,09H
INT 21H
LEA SI,CHARS1;比较两个字符串
LEA DI,CHARS2;
MOV CX,8
CLD
REPE CMPSB
JNZ EXIT1;不相等得话,跳转到EXIT1
LEA DX,RIGHT;显示信息
MOV AH,09H
INT 21H
JMP EXIT
EXIT1: LEA DX,WRONG;显示信息
MOV AH,09H
INT 21H
;JMP AGAIN
DEC BL