实验二 汇编语言基础实验应用_第1页
实验二 汇编语言基础实验应用_第2页
实验二 汇编语言基础实验应用_第3页
实验二 汇编语言基础实验应用_第4页
实验二 汇编语言基础实验应用_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二汇编语言基础实验应用DOS功能调用练习实验目的:1.介绍常用DOS功能调用 2.熟悉DOS功能调用的使用实验要求:根据要求编写程序。实验内容:常用DOS功能调用介绍:DOS功能调用格式:(1)将调用参数装入制定的寄存器;(2)如需功能号,把它装入AH;(3)如需子功能号,把它装入AL;(4)INT 21H1. 从键盘输入一个字符并回显在屏幕上MOV AH,1INT 21H返回值AL=输入字符的ASCII码支持Ctrl_C或Ctrl_Break的中断处理(即结束程序)。2. 从键盘输入一个字符,不回显MOV AH,7INT 21H返回值AL=输入字符的ASCII码不支持Ctrl_C或Ctr

2、l_Break的中断处理(即结束程序)。3. 从键盘输入一个字符,不回显MOV AH,8INT 21H返回值AL=输入字符的ASCII码支持Ctrl_C或Ctrl_Break的中断处理(即结束程序)。4. 输入字符串到缓冲区MOV DS,缓冲区所在段的段地址MOV DX,缓冲区首偏移地址MOV AH,10 ;或写为0AHINT 21H输入字符串以回车结束,如果输入的字符数超过缓冲区容量,多余的字符无法输入。缓冲区定义格式:BUFFER DB 最大字符数,实际输入字符数(不包括回车字符),字符串(包括回车字符)例如:BUFFER db 20,?,20 dup(?)6. 显示一个字符MOV DL,

3、要显示字符的ASCII码MOV AH,2INT 21H7. 显示字符串MOV DS,字符串所在段的段地址MOV DX,字符串首偏移地址MOV AH,9INT 21H字符串定义格式:STRING DB $ 字符串必须以字符$结束。例1:输入一个字符,将其存入字节变量CHAR中,并在第二行显示其后继字符。用到了1号和2号功能,其中1号功能可以用7号或8号功能代替,其区别详见功能介绍。DATA SEGMENTCHAR DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,1INT 21H;输入一

4、个字符MOV CHAR,AL;存入变量CHAR中MOV DL,0AHMOV AH,2INT 21H;显示换行符(换行符的功能为将光标移至下一行的当前位置)MOV DL,0DHMOV AH,2INT 21H;显示回车符(回车符的功能为将光标移至本行行首)MOV AL,CHARINC AL;取得后继字符的ASCII码MOV DL,ALMOV AH,2INT 21H;显示字符MOV AH,4CHINT 21H;退出程序CODE ENDSEND START例2:输入姓名并存入MYNAME缓冲区中。用到了0A号功能和9号功能。DATA SEGMENTMESSAGE DB Please enter you

5、r English name:$MYNAME DB 21,?,21 DUP(?);缓冲区最多容纳21个字符(包括回车)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,MESSAGEMOV AH,9INT 21H;输出字符串LEA DX,MYNAMEMOV AH,0AHINT 21H;输入字符串MOV AH,4CHINT 21HCODE ENDSEND START实验题目:编写程序实现:编写程序实现输入1个学生的学号,姓名,性别,年龄,并保存在变量中,然后再将这1个学生的信息以一行的形式显示出

6、来。要求:输入信息利用1号或0Ah号功能,输出信息利用2号或9号功能。数据段定义示例:(也可以自己根据需要定义变量的结构)注意程序粘贴到记事本后引号需要改写为英文输入法的引号。DATA SEGMENTMESSAGE1 DB Just knock the keyboard:,0AH,0DH,$;输入提示语MESSAGE2 DB Oh, see them again!,0AH,0DH,$;输出提示语STUDENT_NUMBER DB 11,?,11 DUP(?);假设学号为10个字符STUDENT_NAME DB 21,?,21 DUP(?);假设姓名不超过20个字符STUDENT_SEXDB ?

7、;性别F/MSTUDENT_AGE DB 3,?,3 DUP(?);年龄为2个字符0099DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;Enter your code hereMOV AH,4CHINT 21HCODE ENDSEND START汇编语言上机环境及基本步骤一、实验目的:1. 掌握编写汇编源程序的基本格式。2. 熟悉汇编语言上机环境。3. 掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。4. 掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。二、实

8、验内容:在屏幕上显示并打印字符串“This is a sample program.”三、实验仪器微机一台四、实验步骤:1在E盘以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE复制到该目录下,编辑的源文件也保存到该目录下。从WINDOWS进入DOS环境:C:>2用EDIT编辑SW1.ASM源文件。 (1). 从当前目录进入自己的目录下, C:>E: 回车E:> CD zhangsan 回车键入EDIT并回车:E: zhangsan>EDIT根据菜单提示进行各种操作。(2)进入ED

9、IT编辑-EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。 (3).编辑新文件:a、在EDIT编辑器中输入汇编源程序。b、检查输入有无错误。c、打开文件菜单FILEà选择另存为SAVE ASà输入文件名为:SW1.ASMà保存。 注意:保存到你自己的文件夹中d、若需要修改此文件,用FILE菜单à选择打开OPENà输入文件名SW1.ASM,即可修改。修改后注意重新再存盘。

10、(4).编辑汇编源程序a、在EDIT(或记事本)中输入源程序。b、检查。c、存盘。可保存为SW1.ASM3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。(1).一般简单程序只需生成.OBJ文件,可键入简化命令: E:zhangsan>MASM SW1;若有错误,则显示错误行号及错误性质,如:SW1.ASM(5):error A2006:undefined symbor:xxxx(2).若有错重新进入EDIT进行修改。修改后并再存盘,退出编辑,回到DOS,再汇编。E: zhangsan >MASM SW1;(3)没有任何错误时,显示:Assembling:

11、SW1.asm表示汇编成功,生成SW1.OBJ文件。(4).用DIR命令查看应有SW1.OBJ:E: zhangsan >DIR SW1.*4.用连接程序LINK将SW1.OBJ文件连接,生成SW1.EXE可执行文件。(1).一般仅生成SW1.EXE文件, 可键入简化命令:E: zhangsan >LINK SW1;若有错误,则显示错误信息,则应返回编辑、修改、存盘,再汇编、连接直到连接成功,生成SW1.EXE可执行文件。(2).用DIR命令查看应有SW1.EXE:E: zhangsan >DIR SW1.*5.运行SW1.EXE文件E: zhangsan SW1 执行SW1

12、.EXE文件,屏幕应显示:“This is a sample program.”。由连接程序生成的.EXE,在DOS下,直接键入文件名(不要扩展名.EXE)就可以把文件装入内存,并立即执行。但有的程序没有直接显示结果;对于较复杂程序难免会出现错误,直接观察很难找到错误所在,这样就要借用调试程序进行调试。实验现象记录:记录调试过程中出现的问题及修改措施,并记录程序执行结果。五、实验源程序;*定义数据段* DATASEGMENT DA1DB This is a sample program.DB 0DH,0AH,$ DATAENDS;*定义堆栈段*STACK SEGMENT ST1 DB 100

13、DUP(?)STACK ENDS;*定义代码段*CODESEGMENTMAINPROCFAR ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX, STACK ;送堆栈段地址 MOV SS, AX PUSHDS ;返回DOS作准备 MOVAX,0 PUSHAX MOV AX, DATA ;送数据段段地址 MOV DS, AX MOV AH, 9 ;DOS 9号功能调用,显示字符串 MOV DX, OFFSET DA1 INT 21H RET MAIN ENDP CODE ENDS END START六、键盘输入小写字母,显示器显示大写字母 1)实验程序: C

14、SEGSEGMENTMAIN PROCFAR ASSUMECS:CSEGSTART:PUSHDSMOV AX, 0PUSH AXBEGIN:MOVAH,1INT21HCMPAL,aJBSTOPCMPAL,zJASTOPSUBAL,20HMOVDL,ALMOVAH,2INT21HJMP BEGINSTOP:RETMAINENDPCSEGENDSENDSTART另一种方法: DATAS SEGMENTstring1 db ' Input error!Please input between a to z!',0ah,0dh,'$'string2 db ' $'DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AXL0:mov ah,1 int 21h cmp al,0dh jz exit cmp al,'a' jae L1 jb L3 L1: cmp al,'z' jna L2 ja L3 L2:sub al,20h mov cl,al lea dx,string2 mov ah,9int 21h mov dl,0 mov dl,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论