IBM-PC汇编语言程序设计第1章
汇编语言程序设计

汇编语⾔程序设计第4章汇编语⾔程序设计§4.1 汇编语⾔的模式⼀、汇编语⾔源程序的⼀般模式[Name 模块名][Title 标题][定义宏][定义数据段][定义附加段][定义堆栈段]定义代码段源程序结束中括号括起的部分可以省略,可见在⼀个汇编语⾔源程序中必须要定义代码段,并且必须有源程序结束指令。
⼆、8086汇编语⾔程序的⼀个例⼦Pg90。
§4.2 语句⾏的构成汇编语⾔中的语句⼀般分为两种类型:指令性语句和指⽰性语句。
指令性语句的格式为:[标号:] 助记符 [操作数1[,操作数2]] [;注释]指⽰性语句的格式为:[名称] 助记符 [参数1,参数2,……] [;注释]标号和名称都是编程⼈员根据需要和⼀定的规则任意取的。
也可以认为汇编语⾔的语句⾏是由标记和分隔符(空格)构成。
⼀、标记1.IBM宏汇编的字符集(1)字母(2)数字符(3)特殊字符2.界符⽤于定界⼀个标记的结束或⼀个标记的开始,本⾝具有⼀定的意义。
3.常量出现在汇编语⾔源程序中的固定值称为常量。
(1)数值常量①⼆进制:以字母B结束。
②⼗进制:以字母D或⽆字母结束。
③⼋进制:以字母Q(或O)结束。
④⼗六进制:以字母H结束。
(2)字符常量指⽤单引号或双引号引起的字符或字符串。
4.标识符由程序员⾃⼰建⽴的字符序列(标号或名称)。
⼀个标识符不能超过31个字符,不能以数字开头。
5.保留字汇编语⾔中具有特殊意义的字符序列。
6.注释⼀⾏中分号以后的部分。
⽤于对⼀段或⼀⾏程序进⾏说明,便于阅读和理解。
⼆、符号具有⼀定意义的字符序列。
1.寄存器名2.变量段属性、偏移属性、类型属性3.标号段属性、偏移属性、类型属性4.常数5.其它三、表达式由操作数和运算符组合⽽成的序列。
1.操作数(1)⽴即数(2)寄存器操作数(3)存储器操作数2.运算符(1)算术运算符+、-、*、/、MOD(求余)(2)逻辑运算符AND、OR、NOT、XOR(3)关系运算符EQ、NE、LT、LE、GT、GE结果为“假”时,返回0,结果为“真”时,返回⼆进制全1。
汇编语言解一元二次方程程序设计

课程设计题目求解一元二次方程程序设计学院专业班级姓名指导教师2013 年 1 月11 日课程设计任务书学生姓名: 专业班级:指导教师: 工作单位:题 目:求解一元二次方程程序设计初始条件:带有编辑器、汇编程序、连接程序和调试程序的电脑一台。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)采用汇编语言设计一个程序,求解一元二次方程02=++x bx ax 。
实现从键盘输入a,b,c 的值,且-128≤a,b,c≤127;显示方程的解,-32768≤X1,X2≤32767; 考虑所有的情况,包含共轭复根。
(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:12月31日~1月2日: 收集资料,方案选择1月3日~1月8日: 整体流程,程序细节1月9日~1月10日: 调试程序,报告撰写1月11日: 交设计报告,程序演示,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要 (1)1 DOS 功能调用 (2)1.1DOS 功能简介 (2)1.2DOS 输入/输出功能 (2)1.2.1单字符输入——0AH 号 (2)1.2.2单字符输出——2号 (2)1.2.3过程终止——4CH 号 (2)1.2.4子程序设计 (3)2解方程计算过程 (3)2.1一元二次方程02=++c bx ax 分析 ............................................................... 3 2.2 求解一元二次方程的流程 .. (4)2.3各程序段分析编程 (4)2.3.1DATA 数据段的定义 (4)2.3.2处理a 、b 、c 的键盘输入 (6)2.3.3对a 、b 、c 输入的数进行处理 (7)2.3.4对24b ac -进行的计算处理 (9)2.3.5对24b ac -的开方计算 (11)2.3.6计算处理及输出 (13)2.3.7结果显示操作 (18)3结果显示分析 (19)总结与体会 (22)参考文献 .................................................................................................................................. 23 附录 .......................................................................................................... 错误!未定义书签。
微机原理及应用

移码
• 移码是在数的真值上加一个偏移量形成的,他的定 义为:[X]移=2n-1-1+X 2n-1≥X>-2n-1 • 其中X表示二进制数真值,n表示包括符号位和数值 部分在内的二进制数位数,2n-1-1为偏移量。 • 例如:若X=+10010B=+18, Y=-10010B=-18,则 [X]移=110001B,[Y]移=001101B。 运算过程: 100000 1 011111 +10010 110001 100000 1 011111 - 10010 001101
第1章:微型计算机应用的两个方向
用于数值计算、数据处理及信息管理方向
通用微机,例如:PC微机 功能越强越好、使用越方便越好
用于过程控制及智能化仪器仪表方向
专用微机,例如:工控机、单片机 可靠性高、实时性强 程序相对简单、处理数据量小 将CPU以及其他主要部件(如ROM、RAM、I/O 接口)都集成在一个微处理器芯片中 例如:常用的MCS-51、MCS-96
微机原理及应用-课程介绍
微机:IBM PC系列机 原理:8088汇编语言程序设计 应用:半导体存储器及其接口 I/O接口电路及其与外设连接 硬件--接口电路原理 软件--接口编程方法
微机原理及应用-参考文献
钱晓捷 陈涛,微型计算机原理及接口技术, 北京:机械工业出版社,1999.1 钱晓捷,汇编语言程序设计(第2版), 北京:电子工业出版社,2003.6 扬季文等,80X86汇编语言程序设计教程, 北京:清华大学出版社,1998.6 戴梅萼,微型计算机技术及应用, 北京:清华大学出版社,1991 扬素行,微型计算机系统原理及应用, 北京:清华大学出版社,1995 Barry B.Brey著 陈谊等译, Intel系列微处理器结构、编程和接口技术大全 ——80X86、Pentium和Pentium Pro, 北京:机械工业出版社,1998.1
《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]
┆
过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令
课程名称 微机原理与汇编语言 性质 必修

2007 至2008 学年第一学期
教学日历
课程名称微机原理与汇编语言性质必修
总学时48 讲课28 实验其它上机20
授课班级电子05-1,2 学生人数
任课教师李菊职称副教授
所在院(系、部) 机电学院电子系
系(教研室)主任签字_________________________
教材名称:IBM-PC汇编语言程序设计作者:沈美明
出版单位:清华大学出版社出版时间:2001
中国石油大学(北京)教务处制
填写说明:
1.每上一次课填写一行,节次填写数字“1-5”,一天共分5大节课,例如:一周上三次课填写三行,并在周学时栏合并单元格填写“6”,周一第3、4节,在节次栏中填写2。
2.教学日历一经制订,不应出现大的变动,但允许主讲教师在完成课程教学大纲规定的教
学要求前提下,进行必要的调整,以适应不断出现的新情况。
如有变动,须经课程所属系主任(教研室主任)批准,并报院(系、部)办公室备查。
3.上机、大作业、课堂讨论、外出参观、考试等如占课内学时,在“备注”栏内注明。
4.教学日历由教师自存一份、课程所属系存一份,在每学期开学后第一周内送课程所属院(系、部)办公室并发一份电子版给课程所属院(系、部)办公室;有实验和上机学时的须发一份电子版的给实践科sjk@。
《IBM-PC汇编语言程序设计》(第2版)第3章习题解答及答案

第3章习题答案3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;答案:无。
如:MOV AX,5(2)直接寻址;答案:7237H 如:MOV AX,[7237H](3)使用BX的寄存器寻址;答案:无。
因不涉及内存如:MOV AX,BX(4)使用BX的间接寻址;答案:637DH 如:MOV AX,[BX](5)使用BX的寄存器相对寻址答案:D5B4H 如:MOV AX,[BX+ 7237H](6)基址变址寻址答案:8E18H 如:MOV AX,[BX][SI](7)相对基址变址寻址;答案:无效,溢出如:MOV AX,[BX][SI] + 7237H 3.2 试根据以下要求,写出相应的汇编语言指令:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;答案:ADD DX,BX(2) 用寄存器BX 和SI 的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中;答案:ADD AL,[BX][SI](3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回到存储器中;答案:ADD [BX+0B2H],CX (4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回到该存储单元中;答案:ADD WORD PTR [0524H],2A59H (5)把数0B5H与(AL)相加,并把结果送回AL中。
答案:ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:(1) 寄存器间接寻址答案:LEA BX, BLOCKADD BX, 5*2MOV DX, [BX](2) 寄存器相对寻址答案:LEA BX, BLOCKMOV DX, [BX+5*2](3) 基址变址寻址答案:LEA BX, BLOCKMOV SI,5*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56, (20103)=78H,(21200)=2AH,(21201)=4CH, (21202)=B7H, (21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。
汇编语言程序设计
《汇编语言程序设计》课程教学大纲学时:32 学分:2理论学时:24 实验学时:8面向专业:电科、电信、通信课程代码:B2700009先开课程:C语言程序设计课程性质:必修执笔人:王艳春审定人:陈龙猛、张金政第一部分:理论教学部分一、说明1、课程的性质、地位和任务本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。
掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。
汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。
因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。
通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。
2、课程教学和教改基本要求课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。
通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。
学习这门课程,应达到以下几个要求:①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧;②具有阅读,分析汇编语言程序的能力;③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行过程及debug工具的调试手段。
课堂授课采用多媒体教学,采用由浅入深、循序渐进学习步骤,主要讲解设计思想、实现技巧,通过提问题引导学生思考,提高学生的学习兴趣,从而加深学生对理论课的理解,提高学生的动手能力。
二、教学内容与课时分配第一章基础知识(2学时)1.1 机器语言及汇编语言的产生1.2 汇编语言的组成1.3 存储器1.4 指令和数据1.5 存储单元及CPU对存储器的读写1.6 三大总线1.7 主板、接口卡及各类存储器芯片1.8 内存地址空间教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。
汇编语言PDFPDF
汇编语言- 1 - 复习题要点1、指令要熟悉如跳转、转移、传送、逻辑、算术。
2、会程序分析说明结论3、字符转换、子程序、软中断4、中断向量、堆栈5、FLAGS 状态标志及意义一、填空题1、8086 CPU通过______________寄存器和______________寄存器能准确找到指令代码。
2、CPU的标志寄存器中标志位可以分为两大类其中一类称为______________标志位另一类称为______________标志位。
3、当标志位______________1时表示无符号数运算产生溢出而当标志位______________1是表示带符号数运算产生溢出。
4、执行语句MOV AX0F365H和ADD AX0E024H后AX ___________ CF___________ OF___________SF___________ ZF___________。
5、乘法指令语句MUL CL16位的乘积存放在______________中。
6、已知DS2000HBX0D00H20D00H020D01H92H ①执行DEC BYTE PTRBX 20D00H____________ ②执行ROL WORD PTRBX20D00H____________ 20D01H____________ 。
7、已知AX1A08HBX20F8H执行IMUL BL积为____________。
8、已知SS2250HSP0140H 如果在堆栈中压入5个数据则栈顶的物理地址为______________ H如果又从堆栈中弹出3个数据则栈顶的逻辑地址为______________________ H。
9、VAR DB 5 DUP 82 DUP 5 语句汇编应分配_____________个字节单元。
10、指令MOV AXSEG BUF的执行是把_____________送到AX中。
11、类型码为___________H的中断所对应的中断向量存放在0000H0080H开始的4个连续单元中若这4个单元的内容分别为___________、___________、___________、___________则相应的中断服务程序入口地址为5060H7080H。
生肖查询汇编语言程序设计
目录1.课程设计方案 (3)1.1程序设计目的与要求 (3)1.2总体设计思路 (3)1.3系统功能 (3)2.程序流程图设计 (4)2.1主程序流程图设计 (4)2.2子程序取数流程图设计 (4)3程序段落的说明 (7)3.1列写十二生肖字符串地址表 (7)3.2键盘输入与检测 (7)3.3判断生肖算法,循环查询及输出显示 (8)4程序调试说明、结果记录与分析 (9)4.1程序调试过程 (9)4.2课程设计的实验结果 (9)5.设计总结 (10)6.参考文献 (11)摘要汇编是低级语言,对一个人的编程思想要求很高。
可以用的资源少,某些指令只能用某些寄存器,而且指令也不多,也不方便。
所以怎么能尽量少的用寄存器,怎么能充分利用每一份资源,就成了程序员的首要问题。
同时,要能熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用debug指令。
在整个程序的编写中,调试占了很大部分的时间。
要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,大量DOS系统功能调用等辅助程序,这对程序的调试是非常重要的。
本次课程设计是运用汇编语言做生肖查询设计,需要用到很多指令和寻址方式,整个程序有两大结构体,包括主程序结构和输入年份子程序结构,主程序机构是整个程序的大体框架,包含开始,对生肖的寻址,结束等过程,输入年份子程序则是从键盘输入年份的判断和确定。
整个程序有几大功能模块,有数据段部分,堆栈段部分,代码段部分,子程序部分,循环部分,条件转移部分。
关键字:汇编语言,debug指令,DOS系统,生肖查询,子程序生肖查询汇编语言程序设计1.课程设计方案1.1程序设计目的与要求1)增进对汇编语言的认识,加强用汇编语言编程的能力;2)掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3)进一步掌握屏幕输出显示的设计方法;4)设计一个程序判断该年份的年份生肖;5)设计一个程序,实现年份从键盘输入,通过运行计算后,输出相应信息。
《汇编语言程序设计》第1次作业
一、单项选择题(只有一个选项正确,共10道小题)1.十进制数-100的8位二进制数的补码为()。
(A) 10011100(B)11100100(C) 11001110(D) 011001002.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。
(A) 无符号十进制数136(B) 压缩型BCD码十进制数88(C) 8位二进制数-8的补码表示(D) 带符号十进制数-1203.指令MOV AX,[BX][SI]中源操作数采用的寻址方式是()。
(A) 寄存器(B) 基址变址(C) 寄存器间接(D) 寄存器相对4.下面有语法错误的指令是( )。
(A) ADD [BP+2],DA1(DA1是变量名)(B) ADD [BX+3],AL(C) ADD AL,AH(D) ADD AH,[DI]5.在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是( )(A) 12FAH(B) 1305FH(C) 015FH(D) 130FFH6.下列指令中,执行后,不改变标志位ZF的是()。
(A) AND AL,AL(B) TEST AL,0FFH(C) CMP AL,BL(D) ROR AL,CL7.DATA SEGMENTDA1 DB 32 DUP(?)DA2 DW 1456H,789AHDA3 DW DA2DATA ENDS…MOV BX, DA3上述指令执行后,BX中的内容是( )。
(A) 0031H(B) 0032H(C) 0020H(D) 0021H8.完成将累加器AX清零,下面错误的指令是()。
(A) OR AX,00H(B) AND AX,00H(C) XOR AX,AX(D) SUB AX,AX9.数据段有如下数据定义VAR DB 4 DUP(1,5 DUP(?)),1,2执行指令MOV AL,SIZE VAR后AX寄存器的值是多少()。
(A) 4(B) 1(C) 5(D) 2010.内存中(2000H)=3000H,(3000H)=A01FH,MOV BX,[2000H]MOV AX,[BX]执行上述指令AX的内容是()。