汇编语言实验指导书
汇编语言实验指导书

目录第一部分汇编语言程序的上机过程 (1)一、建立汇编语言的工作环境 (1)二、在计算机上运行汇编语言的步骤 (1)三、建立ASM文件 (1)四、用MASM程序产生OBJ文件 (3)五、用LINK程序产生EXE文件 (3)六、程序的执行 (3)七、举例 (3)第二部分汇编语言上机调试 (4)一、为何需要调试? (4)二、如何进行调试? (5)第三部分汇编语言上机内容 (8)实验一输出字符串 (8)实验二算术指令综合编程 (8)实验三查找子字符串 (9)实验四字符串正向、反向输出 (9)实验五信息检索 (9)实验六格式化输出 (9)实验七数组合并 (10)实验八字符统计 (10)实验九数制转换 (10)第四部分汇编语言实验参考代码 (11)实验一输出字符串 (11)实验二算术指令综合编程 (11)实验三查找子字符串 (12)实验四字符串正向、反向输出 (13)实验五信息检索 (14)实验六格式化输出 (17)实验七数组合并 (18)实验八字符统计 (20)实验九数制转换 (22)第一部分汇编语言程序的上机过程一、建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上建立以下文件:1、编辑程序,如EDIT.EXE2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。
二、在计算机上运行汇编语言的步骤1、用编辑程序建立ASM源文件,以ASM作为扩展名2、用汇编程序把ASM文件转换成OBJ文件3、用连接程序把OBJ文件转换成可执行文件4、在DOS提示符下直接键入可执行文件名即可执行该程序三、建立ASM文件建立ASM文件的编辑程序可以是DOS自身带的编辑程序EDIT.EXE,在DOS提示符下键入EDIT命令即可出现EDIT界面,其操作如下:D:\>edit源程序输入完后,以ASM作为扩展名进行保存,假设所保存的文件名为:ex.asm。
汇编语言实验一 指导书

实验一:汇编上机指导及例示一、实验目的●了解汇编语言程序的运行环境和所需的系统程序;二、实验要求●掌握如何编辑、汇编、连接和运行汇编程序;●掌握常用的DEBUG命令。
三、实验原理题:在屏幕上显示一条'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY'提示信息,如从键盘上输入ESC键,则结束程序,如输入的不是大写字母,则在显示器上显示出来,如输入的是大写字母,则转换为小写字母输出。
四、实验设备计算机五、实验步骤1、用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的.EXE文件。
用于调试程序时的输入格式:DEBUG FILENAME.??? 回车其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名字为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。
附: 基本debug操作1、显示内存单元的内容:-d [地址] 或 [范围]2、修改内存单元的内容:-e 地址内容表或-e 地址3、显示CPU内部寄存器和标志位状态:-r4、显示和修改某个寄存器的内容:-r 寄存器名5、汇编命令:-a 地址6、逐条指令追踪:-t [=地址] (无地址则执行IP所指示的指令)7、退出debug:-g8、多条指令追踪:-t [=地址] [n]注:该指令从指定地址起执行n条命令后停下来9、运行命令:-g [=地址1] [地址2 [地址3...]]地址1规定了运行起始地址,后面的地址均为若干断点地址10、反汇编命令:(1)-u [地址]该命令从指定地址开始,反汇编32个字节,若省略地址,则从上一个u命令的最后一条指令的下一单元开始显示32个字节(2)-u 范围该命令对指定范围的内存单元进行反汇编如:-u 04ba:0100 0108等价于:-u 04ba:0100 L9下面给出一些常见出错信息,以便查对:1、Register already defined 汇编内部出现逻辑错误2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西3、Symbol is multi-defined 重复定义一个符号4、Symbol not defined 符号没有定义5、Syntax error 语句的语法与任何可识别的语法不匹配6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量)7、Not proper align/combine type SEGMENT参数不正确8、One operand must be const 这是加法指令的非法使用9、Operands must be same or 1 abs 这是减法指令的非法使用10、Already have base register 试图重复基地址11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)12、Illegal register value 指定的寄存器值不能放入“reg”字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 给出一个用0作除数的表达式16、Value is out of range 数值大于需要使用的17、CS register illeal usage 试图非法使用CS寄存器18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录。
《汇编 语言》实验 指导书

孝感学院计算机科学系本科《汇编语言程序设计》实验指导书目录实验一:汇编环境与DEBUG调试 (2)实验二:8086汇编语言分支程序设计 (8)实验三:8086汇编语言循环程序设计 (10)实验四:8086汇编语言子程序程序设计 (13)实验五:8086汇编语言中断与磁盘程序设计 (17)相关说明:《汇编语言程序设计》实验的主要目的是掌握汇编程序调试的方法与一般的程序设计能力,为今后的硬件应用打下基础。
因此本实验指导书重在强调实验调试的环节,有关程序设计的具体方法及相关算法请参见教材。
此文件中用黑体字加粗的内容一般为重要信息或实验的步骤与要求,未使用黑体加粗或有下划线的内容是提示信息或问题的答案。
实验一:汇编环境与DEBUG调试目的与要求熟悉汇编环境与汇编源程序的调试,重点掌握汇编的过程与常用DEBUG命令的用法实验内容一、熟悉汇编的编程环境1.汇编语言源程序的建立:可以使用任何文本编辑器建立汇编源程序文件,如:TC、EDIT等。
但建立的文件扩展名建议为.asm,下面的源程序功能用于在屏幕上输出字符串“hello,world!”,我们通过此源程序的运行过程了解汇编的编程环境。
DATA SEGMENTBUF DB“hello,world!$”DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AX,9INT21HMOV AH,4CHINT21HCODE ENDSEND START在DOS提示符下键入以下编辑器命令,如:C:\MASM>EDIT或TC然后在编辑器的窗口中通过键盘输入以上源程序。
并保存为文件abc.asm.后返回到DOS提示符下。
2.将源程序文件汇编成目标程序文件:汇编功能可以使用Microsoft的MASM进行,微软的汇编程序有多个版本,但使用方法大致相同,本实验将使用MASM 5.0进行汇编。
汇编语言实验指导书

MOV AX,13C3
(5) 显示内存单元内容的命令 D,格式为:
-D[地址]或-D[范围]
-d ds:0
13C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
第 1页
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存
放在从指定地址开始的存储器中。
例如:
-a
136B:0100 mov ax,100
136B:0103 mov bx,200
136B:0106 mov cx,300
136B:0109 mov dx,400
136B:010C
-
(2) 反汇编命令 U,有两种格式:
第 I页
实验一 DEBUG 命令实验
一.实验目的: 掌握 DEBUG 的基本命令及其功能
二.实验内容: DEBUG 是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语
言程序员提供了非常有效的调试手段。 1、DEBUG 程序的启动 DEBUG 的命令格式: [drive:][path] DEBUG [d:][p][filename][.ext][param...] 其中: drive: 是指定 DEBUG 文件的磁盘驱动器标识符,DEBUG 是外部 DOS 命令,所以必须把
其余通用寄存器均置为 0,标志寄存器置为下述状态。
NV
UP
EI
PL
NE
NA
PO
NC
《汇编语言》实验指导书.

《汇编语言》实验指导书目录实验一Debug命令的使用 (3)实验二基本汇编指令的使用 (7)实验三汇编语言程序的调试与运行 (10)实验四系统功能调用程序的调试与运行 (15)实验五分支程序设计 (17)实验六循环程序设计 (20)实验七子程序设计 (23)实验八高级汇编语言程序设计 (25)实验九I/O程序设计 (30)实验十中断程序设计 (33)实验十一综合程序设计 (38)实验一Debug命令的使用一、知识点1、DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令均在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、Debug的调入和退出以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
若不指定地址,则系统从默认的地址开始存放。
按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。
(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。
《汇编语言程序设计》实验指导书

实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
汇编语言程序设计实验指导书

实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。
二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。
(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。
(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。
(3)用连接程序(LINK 、EXE)生成EXE文件。
(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。
(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。
汇编语言程序设计实验指导书

重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。
该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。
第二部分为十五个实验的全部程序,仅供学生参考。
该实验指导书由数计学院计算机教研室张开成同志编写。
2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。
掌握汇编语言程序的编辑、汇编、连接过程。
二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。
2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。
三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。
2、按实验要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成扩展名为.EXE的可执行文件。
3、运行程序。
五、实验报告要求:1、总结用QE编辑源程序的方法。
2、说明源程序的连接、汇编过程。
3、分析运行结果。
4、按要求写出完整的实验报告(必须列出程序清单)。
实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。
2、掌握程序的调试方法。
二、实验内容:1、从键盘读入两个一位数,输出它们的积。
若为非数字键,则显示字符“E”,退出程序。
2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。
三、实验准备:1、预习分支程序设计方法。
2、按实验内容要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成可执行文件.EXE。
3、运行程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第一部分汇编语言程序设计实验 (2)实验一输出字符‘A’ (2)实验二数据的显示实验 (5)实验三从键盘上输入数据实验 (12)实验四字符串的显示实验 (17)第一部分汇编语言程序设计实验实验一输出字符‘A’一、实验目的1.通过这个简单的例子熟悉在微机上建立、汇编、链接和运行8086/8088汇编语言程序的过程。
2.掌握字符的显示方法。
3.学习DOS系统功能调用。
二、实验内容输出字符…A‟,程序流程图如图1-1所示。
图1-1输出字符…A‟程序流程图源程序如下:PROG SEGMENTASSUME CS:PROGMOV DL, 'A'MOV AH, 2INT 21HMOV AH, 4CHINT 21HPROG ENDSEND三、实验设备PC机一台,MASM汇编程序四、实验原理DOS功能调用的两个子程序,调用方法如下:(1)设置入口参数(2)子程序编号送人AH(3)INT 21H,子程序请求中断指令有的子程序不需要入口参数,但大多数需要将参数送入指定地方。
MOV DL,'A'MOV AH,2INT 21H上面用的程序是DOS系统功能调用的2号子程序,功能是将字符送入屏幕显示。
其入口参数是把待输出字符的ASCII码送到DL寄存器中。
例如:ASCII码若是0DH,2号子程序处理成回车;ASCII码若是0AH,处理成换行。
MOV AH, 4CHINT 21H这是DOS系统功能调用的4CH号子程序,功能是返回操作系统,没有入口参数。
五、实验步骤1.用编辑软件(EDIT或记事本)将源程序输入,并存盘。
注意:源程序是用汇编语言语句编写的程序,并不能为机器所识别。
源程序的扩展名为ASM。
2.用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)命令格式是:C:/>MASM 文件名↙此时,汇编程序会在屏幕上给出提示,一般选择回车键作为回答。
Object filename [文件名.OBJ]:↙Source listing [NUL.LST]:↙Cross-reference [NUL.CRF]:↙如果源程序没有错误,则在屏幕上会显示如下信息:0 Warning Errors0 Severe Errors在汇编过程中,如果源程序有错误,要在编辑状态下进行修改,然后重新汇编,直到没有语法错误,才能生成.OBJ文件。
其中“Warning Errors”为一般性错误,不影响OBJ文件的生成;而“Severe Errors”是致命错误,会导致汇编通不过,无法生成OBJ 文件。
汇编程序输出3个文件,第一个是目标文件,扩展名是OBJ,这个文件必须有。
第二个是列表文件,扩展名是LST,列表文件给出源程序和目标代码程序。
如果在源程序中定义了宏,则列表文件显示的源代码会将宏展开。
列表文件是可选的,如果不需要该文件,则直接按回车键即可。
第三个是建立交叉引用文件,该文件给出了用户定义的所有符号,并且是可选的,如果不需要该文件,则直接按回车键。
3.用LINK程序产生执行文件(EXE文件)命令格式是:C:/>LINK 文件名↙键入上述命令后,屏幕上会出现如下所示的提问,一般情况下,按回车即可。
Run File [文件名.EXE]:↙List File [NUL.MAP]:↙Libraries [.LIB]:↙在连接过程,输出2个文件,第一个是可执行文件,扩展名是EXE,这是最终要运行的二进制文件,该文件必须有。
第二个是内存分配图文件,文件中会列出各段的起始地址、终止地址、长度及段名。
该文件是可选的,如果不需要该文件,则直接按回车键即可。
第三个问题是询问是否用到库文件,若需要,输入文件名后按回车键,否则直接按回车键。
4.执行程序命令格式是:C:/> 文件名↙上面生成可执行文件后,就可以在DOS下直接打入文件名,运行该文件。
本例中,运行程序后,在屏幕上就会出现字符“A”,然后返回操作系统。
六、思考题1.请说出一个完整的汇编程序从编写到运行所需的步骤。
2.修改源程序,改变屏幕显示的内容。
七、实验报告内容及要求实验报告内容应包括实验目的、实验内容、实验设备、实验步骤以及心得体会,并按要求回答思考题1、2。
实验二数据的显示实验一、实验目的1.掌握屏幕上显示各种进制数据的方法。
2.掌握将内存中的二进制数转换为十进制、十六进制数的方法。
3.学会子程序的编写、调用及数据传递方法。
二、实验内容1.把BX中的无符号二进制数转换成十进制数,在屏幕上显示出来。
2.把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。
3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果以十进制数的形式在屏幕上显示出来。
4.求一个数据块(由20个单字节的带符号数组成)中的正数之和(和不超过字)和负数之和(和不超过字),并在屏幕上用十进制数的形式分别显示出两个和。
5.将寄存器BX中的二进制数转换成十六进制数,并在屏幕上显示出来。
从高到低依次取出4位二进制数变为ASCII码输出即可。
三、实验设备:PC机一台、masm汇编程序四、实验原理:1.把BX中的数按位由高到低转化成十进制数,即依次对其除以10000、1000、100、10、1,将获得的商放到DL中,加30H变成ASCⅡ码,调用DOS系统中断INT 21H的2号功能显示出来;对于每一位十进制数的获得和显示,实验通过编制子程序DEC_DIV并不断调用来实现。
2.先通过标志位判断BX中数的符号,如果是正数就直接转换成十进制数,进行显示,方法与内容1相同;如果为负数,则需要先对其求补,再屏蔽其符号位,相当于得到了这个负数的绝对值。
在显示时,先把负号“-”显示出来,其余的显示与正数相同。
3.编程思路是把数据块中的第一个元素放到AL中,并通过循环把其余的元素和AL比较,如果新元素较大的话就取代原来的元素放到AL中。
比较完成后,把最大的元素放到预先为其保留的地址中,并同时用内容1的方法把这个数以十进制形式显示出来。
4.编程思路是通过将被加数与0相比较,实现分支转移,将正数与负数分别累加到寄存器SI和DI中,并运用内容2显示带符号数的方法,通过调用子程序将其显示出来。
其中为了换行,又加了两个2号系统功能调用,分别将换行和回车放到了被显示的两个字中间。
5.16位的二进制数,4位一组可以显示为4位十六进制数,从高到低依次取出4位二进制数变成ASCⅡ码输出即可。
五、实验步骤:依照前面介绍的方法,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1.实验内容1(1)实验内容1的流程图,如图2-1所示:图2-1 内容1流程图(2)实验内容1的源程序,参考如下:CODE SEGMENTASSUME CS: CODESTART: MOV BX, 0FFFHMOV CX, 1000CALL DEC_DIVMOV CX, 100CALL DEC_DIVMOV CX, 10CALL DEC_DIVMOV CX, 1CALL DEC_DIVMOV AH, 4CHINT 21HDEC_DIV PROC NEARMOV AX, BXMOV DX, 0DIV CXMOV BX, DXMOV DL, ALADD DL, 30HMOV AH, 2INT 21HRETDEC_DIV ENDPCODE ENDSEND START2.实验内容2(1)实验内容2的流程图,如图2-2所示:图2-2内容2流程图3.实验内容3(1)实验内容3的流程图,如图2-3所示:图2-3 内容3流程图4.实验内容4(1)实验内容4的流程图,如图2-4所示:图2-4 内容4流程图5. 实验内容5(1)实验内容5的流程图,如图2-5所示:图2-5 内容5流程图六、思考题1.请总结显示寄存器或者内存中的十进制和十六进制数据的方法。
2.请总结子程序编写、调用及参数传递的要点。
3.修改源程序,改变屏幕显示的内容。
七、实验报告内容及要求实验报告内容应包括实验目的、实验内容、实验设备、实验步骤以及心得体会,并按要求回答思考题1、2、3。
实验三从键盘上输入数据实验一、实验目的1.掌握从键盘上输入数据的方法。
2.键盘上输入的是ASCII字符,掌握如何将ASCII字符转换为机内数字。
二、实验内容1.从键盘上输入一个十进制数(0~65535),转换成二进制数并放入寄存器BX 中。
2.从键盘上输入0~65535范围的一个十进制数,在屏幕上显示出相应的十六进制数。
三、实验设备PC机一台、masm汇编程序四、实验原理1.内容1的编程思想是对于输入的字符,先判断它是不是1~9的数字字符,若不是,直接跳出循环,若是的话,将ASCⅡ码转化成对应数值并存到AX中,对于下一个输入的数值,判断完成后,通过将AX和BX内容交换并将AX中的数*10,再累加实现。
2.内容2的编程思想是先按照内容1的思路将字符输入、判断并转化为其对应二进制数,然后再通过把二进制数转化为十六进制数的方法实现。
为了使显示出来的数比较直观,在程序中又调用了2号系统功能显示,H代表十六进制数,并通过换行和回车把数放在两行。
3.DOS调用INT 21H 的1号功能子程序的作用是:从键盘上输入一个字符,并将其键值(相应字符的ASCII码值)放入寄存器AL中。
1号调用不需要入口参数。
调用格式是:MOV AH, 1INT 21H执行上述指令后,系统将扫描键盘,等待按键按下,如果有键按下,就将其键值对应的ASCII码值读入到寄存器AL中,同时将这个字符显示在屏幕上。
五、实验步骤:依照上次实验步骤,对每一个实验内容对应的程序进行编辑、编译、连接和运行,直到达到实验要求。
1. 实验内容1(1)实验内容1程序流程图实验内容1程序流程图如图3-1所示。
(2)实验内容1的源程序,参考如下:CODE SEGMENTASSUME CS:CODE START PROCCALL DECBINCALL XIANSHIMOV AH,4CHINT 21HSTART ENDPDECBIN PROC NEARMOV CX,10MOV BX,0LOP1: MOV AH,1INT 21HCMP AL,30HJL EXITCMP AL,39HJG EXITSUB AL,30HMOV AH,00HXCHG AX,BXMUL CXADD BX,AXJMP LOP1EXIT: RETDECBIN ENDPXIANSHI PROC NEARLP1: MOV CX,10000CALL DEC_DIVMOV CX,1000CALL DEC_DIVMOV CX,100CALL DEC_DIVMOV CX,10CALL DEC_DIVMOV CX,1CALL DEC_DIVRETXIANSHI ENDPDEC_DIV PROC NEARMOV AX,BXMOV DX,0DIV CXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,2INT 21HRETDEC_DIV ENDPCODE ENDSEND START图3-1 内容1程序流程图(2)实验内容1运行结果输入2568后,程序显示如图3-2所示:图3-2 实验内容1运行结果2. 实验内容2(1)实验内容2程序流程图实验内容2程序流程图如图3-3所示。