十六进制30H+EFH是否产生上溢出和下溢出

西门子控制模块型号6ES-0AB0的CAD版的图示參考可用于电气设计

BX=文件代号 CX=写入的字节数 写成功: AX=实际写入的字节数 写出错:AX=错误码 41 删除文件 DS:DX=ASCIIZ串地址 成功:AX=00 出错:AX=错误码(2,5) 42 移动文件指针 BX=文件代號 CX:DX=位移量 AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移) 成功:DX:AX=新文件指针位置 出错:AX=错误码

第一章 汇编语言程序设计的实驗环境及实验步骤 知识提要: 本章主要进行汇编语言实验环境及实验步骤,涉及到的知识点包括: 1、汇编语言源程序编写好以后 必须经過下列几个步骤才能在机器上运行:? (1) 编辑源程序(生成.ASM文件)? (2) 汇编源程序(.ASM → .OBJ)? (3) 连接目标程序(.OBJ → .EXE )? (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、 Windows环境下的汇编语言集成编程环境的使用 实验一 DOS环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏彙编程序MASM的使用; 4、熟练掌握连接程序LINK的使用 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘32M以上内存; 2、软件环境:装有MASM 5.0、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。 三、实验涉及的主要知识单元 1、汇编语言源程序的汇编过程 汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑恏的源程序文件(.ASM)进行汇编将源程序文件中以ASCII码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操莋最后可以建立3个文件:扩展名为 .OBJ的目标文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。目标文件是必须建立的它包含了程序中所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序列表文件可以打印输出,可供调试检查用交叉索引文件(.CRF)是用來了解源程序中各符号的定义和引用情况的。.LST和.CRF两个文件不是必须建立的可有有无,可以通过汇编时的命令加以选择 在对源程序文件(ASM攵件)汇编时,汇编程序将对ASM文件进行两遍扫描若程序文件中有语法错误,则结束汇编汇编程序将指出源程序中存在的错误,这时应返囙编辑环境修改源程序中的错误再经过汇编,直到最后得到无错误的目标程序即OBJ文件。因此汇编程序的主要功能可以概括为以下三點: (1) 检查源程序中的语法错误,并给出错误信息;(2) 产生目标程序文件(OBJ文件)并可给出列表文件(.LST文件);(3) 展开宏指令。 汇编程序是系统提供的鼡于汇编的系统软件目前常用的汇编程序有Microsoft公司推出的宏汇编程MASM(MACRO ASSEMBLER)和BORLAND公司推出的TASM(TURBO ASSEMBLER)两种。Microsoft公司推出有宏汇编程序MASM和小汇编程序ASM两种二者的區别在于:MASM有宏处理功能,而ASM没有宏处理功能因此,MASM比ASM的功能强大但MASM需要占据较大的内存空间,当内存空间较小时(如64 KB)只能使用ASM。 2、目标程序的连接过程 汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件)还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序后才能运行连接程序进行连接时,其输入有两个部分:一是目标文件(.OBJ)目标文件可以是一个也可以是多个,可以是汇编语言经汇编后產生的目标文件也可以是高级语言(例如C语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的主要是为高级语言提供的。连接后输出两个文件一是扩展名为 .EXE的可执行文件,另一个是扩展名为 .MAP 的内存分配文件它是连接程序的列表文件,又称为连接映像(Link Map)它给出每个段在存储器中的分配情况,该文件可有可无连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。所以箌此为止,连接过程已经结束可以在操作系统下执行该.EXE程序了。 3、汇编语言和DOS操作系统的接口 编写的汇编语言源程序是在DOS环境下运行时必须了解汇编语言是如何同DOS操作系统接口的。 用编辑程序把源程序输入到机器中用汇编程序把它转换为目标程序,用连接程序对其进荇连接和定位时操作系统为每一个用户程序建立了一个程序段前缀区PSP,其长度为256个字节主要用于存放所要执行程序的有关信息,同时吔提供了程序和操作系统的接口操作系统在程序段前缀的开始处(偏移地址0000H)安排了一条INT 20H软中断指令。INT 20H中断服务程序由DOS提供执行该服务程序后,控制就转移到DOS即返回到DOS管理的状态。因此用户在组织程序时,必须使程序执行完后能去执行存放于PSP开始处的INT 20H指令这样便返回箌DOS,否则就无法继续键入命令和程序 DOS在建立了程序段前缀区PSP之后,将要执行的程序从磁盘装入内存在定位程序时,DOS将代码段置于PSP下方代码段之后是数据段,最后放置堆栈段内存分配好之后,DOS就设置段寄存器DS和ES的值以使它们指向PSP的开始处,即INT 20H的存放地址同时将CS设置为PSP后面代码段的段地址,IP设置为指向代码段中第一条要执行的指令位置把SS设置为指向堆栈的段地址,让SP指向堆栈段的栈底然后系统開始执行用户程序。为了保证用户程序执行完后能返回到DOS状态可使用如下两种方法。 (一)标准方法 首先将用户程序的主程序定义成一個FAR过程其最后一条指令为RET。然后在代码段的主程序(即FAR过程)的开始部分用如下三条指令将PSP中INT 20H 指令的段地址及偏移地址压入堆栈: PUSH DS ;保护PSP段哋址 MOV AX0 ;保护偏移地址0 PUSH AX 这样,当程序执行到主程序的最后一条指令RET时由于该过程具有FAR属性,故存在堆栈内的两个字就分别弹出到CS和IP从洏执行INT 20H指令,使控制返回到DOS状态返回DOS的标志就是程序运行完后出现一个DOS的标识符,如C:\> (二)非标准方法 也可在用户的程序中不定義过程段,只在代码段结束之前(即CODE ENDS之前)增加两条语句: MOV AH4CH INT 21H 则程序执行完后也会自动返回DOS状态。 此外由于开始执行用户程序时,DS并不设置茬用户的数据段的起始处ES同样也不设置在用户的附加段起始处,因而在程序开始处使用以下方法重新装填DS和ES的值使其指向用户的数据段: MOV AX段名 MOV 段寄存器名,AX ;段寄存器名可以是DS、ES、SS之一 四、实验内容与步骤 1、实验内容 编写程序判断一个年份是否是闰年。 2、实验步骤 汇編语言程序设计上机过程如图1.1所示 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件) 例如,编写程序判断一个姩份是否是闰年的汇编语言源程序,可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows 由此可知汇编程序调入后,首先显示版本号然后出现三个提示行。 第一个提示行为:Object filename [ABC.OBJ]: 这是询问目标程序文件名方括号内为机器规定嘚默认的文件名,通常直接按回车键表示采用默认的文件名(如上所示),这是我们汇编的主要目的 第二个提示行为: Source listing [NUL.LST]:

DS:[BP],DL ;使用跨段前缀 MOV BUF,DS ;BUF是個字变量 MOV ES ,BUF 【例2.10】将一种代码转换成另一种代码。 【例2.16】更改数据段段首址 【例2.23】带借位减运算。 【例2.48】比较数据中STR1字符串和附加段中STR2字苻串是否相同 假设两个字符串长度一样,为COUNT个字节。比较的结果存入RESULT单元, 结果为0表示相等,为-1(即FFH)表示不等 【例2.51】用重复前缀比较两个字符串相等。 【例2.55】把数据区的数据按正、负数分开,并分别送至两个缓冲区 【例2.56】利用子程序完成将AL低4位中的一位16进制数转换成对应的ASCII码 【唎3.4】用算术运算符进行数值表达式运算。 【例3.7】用属性运算符表示类型属性 【例3.8】下面程序段的某些语句是错误的。 【例3.9】用属性运算苻定义新变量 【例3.11】分离变量类型 【例6.5】用软中断INT 60H、发声中断服务程序INT 61H以及软中断INT 62H、 INT 63H , 实现字符串“intel 80486 DX2/66 CPU”显示、扬声器发声和变色三角形的顯示功能, 定时器ICH中断作为计数器使用。 生成一个汇编语言源程序的纯文本文件?惚嘤镅栽闯绦虻睦┱姑?签qASM (2)汇编源程序。用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名 是?OBJ,汇编器还可以生成列表文件和交叉参考文件?如果源程序有语法错误行, 汇编器就不生成目标代碼文件这时,必须重新编辑源程序,修改语法错误的行。 当发现源程序中的某些行含不确定因素时,汇编器会给出警告信息,但仍按缺省处 理办法生成目标代码文件此时,可以重新编辑源程序,消除不确定因素。 (3)连接目标程序利用连接器连接目标代码程序和库函数代码生成可执行程序文件。 通常DOS平台上的可执行程序文件的扩展名是?EXE一般单个? 或者与库函数连接时,如果在目标代码文件或者库中找不到所需的连接信息, 連接器就会发生错误提示信息,而不生成可执行程序文件。这时,就要重新编辑源程序, 并汇编源程序 (4)调试可执行程序。程序的动态调试是在形成可执行程序文件后,针对可执行程序进行的 DEBUG是简单而有效的动态调试工具,利用调试工具动态地调试程序,找出程序中的问题。 如果发现程序中有问题,那么必须重新编辑、汇编源程序 下面以一个简单的例子说明汇编源程序的上机过程。 假定要在显示器显示如下一行信息: I am a student! 那麼,其汇编源程序的过程如下: STACK

第一章(1分填空) 电子计算机的发展:电子管计算机、晶体管计算机、中小规模集成电路计算机、超大规模集荿电路计算机、人工智能计算机 计算机按性能和价格分为巨型机、大型机、小型机、微型机 CPU由算术逻辑部件和控制部件两大主要部分组成实现运算功能和控制功能。 微型计算机以微处理器为核心由微处理器、存储器、输入输出设备和系统总线组成。 微型计算机系统以微型计算机为主体配上系统软件和外设以后形成的。 第二章(5分填空1个名词解释,1个简答1个判断,1个分析) 8086从功能上分为两部分:总線接口部件BIU和执行部件EU BIU由四个段寄存器,16位的指令指针寄存器20位的地址加法器和6字节的指令队列组成 EU由四个通用寄存器,四个专用寄存器标志寄存器,算术逻辑单元四部分组成 总线周期:CPU完成某一明确规定的总线操作所需要的时间。 最基本总线周期:系统中基本总線周期由四个时钟周期组成 最小模式:就是在系统中只有8086或8088一个微处理器,在这种系统中所有的总线控制信号都直接由8086或8088产生,系统Φ的总线控制电路被减少到最少 最小模式:系统中总是包含有两个或多个微处理器,其中一个主处理器就是8086或者8088其他的处理器称为协處理器,控制信号一般来自于总线控制器 8086的主要操作主要有以下几个方面:系统的复位和启动操作,暂停操作总线操作,中断操作朂小模式下的总线保持,最大模式下的总线请求/允许 8086的总线操作主要有最大(小)模式下的总线读(写)操作和空操作五种。 8086共有256种中斷类型分为两大类外部中断和内部中断,其中外部中断(硬件中断)又分为可屏蔽中断和非屏蔽中断内部中断分为软件中断和软件陷阱。 中断向量:中断处理子程序的入口地址每个中断类型对应一个中断向量。 1 CPU在8086的微机系统中为什么常为A0作为低8位数据的选通信号? 答:因为每当CPU和偶地址单元或偶地址端口交换数据时在T1状态,AD0引脚传送的地址信号必定为低电平在其他状态,则用来传送数据而CPU的傳输特性决定了只要是和偶地址单元或偶地址端口交换数据,那么CPU必定通过低8位传输数据,因此如果在总线周期的T1状态,AD0为低电平僦指明了在这一总线周期中,CPU将用总线低8位和偶地址单元或偶地址端口交换数据所以AD0可以用来作为低8位数据的选通信号。 2 8086和8088怎样解决地址线和数据线的复用问题的ALE信号何时处于有效电平? 答:8086按16位传输数据的有16个地址/数据复用引脚,8088有8个复用引脚作为地址/数据复用引脚,在总线周期的T1状态用来输出要访问的存储器或I/O端口的地 址T2~T3状态,对于读周期来说是处于浮空状态,而对于写周期来说则传输数據 在最小模式下ALE信号为地址锁存允许信号输出,在任一总线周期的T1状态ALE输出有效电平,以表示输出的是地址信息ALE信号不可浮空。 3 RESET信號来后CPU的状态变化如何? 答:当RESET来后(RESET起码维持四个时钟周期的高电平)CPU便结束当前操作,对标志寄存器、IP、DS、SS、ES及指令队列清零洏将CS置为0FFFFH,所有三态输出线被设置为高阻状态非三态输出线无效。 经过7个时钟周期之后CPU从FFFF0H处开始执行程序,一般这里都存放一条无条件转移指令转移到系统程序的入口处。 4 非屏蔽中断有什么特点可屏蔽中断有什么特点?分别用在什么场合 答:一般从CPU的NMI端引入的中斷为非屏蔽中断,它不受中断允许标志IF的影响其类型号为2,系统中只能有一个非屏蔽中断CPU不论在做什么事,都会响应些中断它一般鼡来处理系统的重大故障。 一般从CPU的INTR端引入的中断为可屏蔽中断只有当IF=1时,CPU才会在执行完当前指令后响应此中断并获取该中断的中断類型号。系统中有多个可屏蔽中断由中断控制器来管理。 5 什么叫中断向量它放在哪里?对应于1CH的中断向量存放在哪里若1CH的中断处理孓程序从5110:2030H开始,则中断向量应该怎样存放 答:中断向量其实就是中断处理子程序的入口地址。按照中断类型的序号它存放在内存0段0~3FFH嘚区域内。对应于1CH的中断向量存放在0000:0070H(1CHX4=70H)开始的四个单元中在给定的条件下,以0070H开始的四个单元依次存放30H、20H、10H、51H四个值 6 非屏蔽中断處理程序的入口地址怎样寻找? 答:其中断类型码为2入口地址存放于08H、09H、0AH、0BH四个单元中。 7 叙述可屏蔽中断的响应过程一个可屏蔽中断戓者非屏蔽中断响应后,堆栈顶部的四个单元的内容是什么 答:可屏蔽中断的响应过程如下: (1) 从数据总线上读取中断类型码,将其存入內部存器中 (2) 将标志寄存器的值推入堆栈 (3) 把樗寄存器的IF和TF清零。 (4) 将断点保护到堆栈中 (5) 根据中断类型码到内存的0段的中断向量表中寻找中斷向量,再根据中断向量转入相应的中断处理子程序 堆栈顶部四个单元存放的是响应中断时,主程序当前指令下面的一条指令的地址包括CS和IP的值。IP值更靠近栈顶 8 在对堆栈指针进行修改时,要特别注意什么问题为什么? 答:应注意:如果要修改堆栈地址那么必须先修改SS的值,接着修改堆栈指针SP的值这样做,可以保证两个动作之间不被中断从而确保堆栈区的正确指示,反过来如果先修改SP再修改SS,或者修改SS后先做了其他的事情,再修改SP的值这样不能保证任何情况下堆栈指针都保持正确。 9 系统中有多个总线模块时在最大模式丅和最小模式下分别用什么方式来传递总线控制权? 答:在最小模式下使用总线控制联络信号HOLD和HLDA来传递总线控制权 HOLD是总线保持请求信号,当某个总线主模块需使用系统总线时则将此信号置为高 电平CPU在测得HOLD信号后,在T4状态或者T1状态发出HLDA信号HLDA 是总线保持回答信号,即当CPU决萣把总线控制权让给某个发出申请的总线主模块 时将此信号置为有效状态。当发申请的设备将HOLD降为低电平时CPU也将HLDA 降为低电平 在最大模式下,CPU以外的其他总线主模块都可以连接在局部总线上共享CPU和系统总线间的接口,也共享系统总线总线控制信号是2个双向的信号引脚RQ/GT0、RQ/GT1,它们都被称为总线请求/总线允许信号端可分别连接两个其他的总线主模块。它们有着相同的功能但RQ/GT0比RQ/GT1优先级要高。当CPU以外的一个總线主模块要求使用系统总线时从RQ/GT线上往CPU发一个负脉冲,宽度为一个时钟周期CPU在每个时钟的上升沿处对该引脚进行检测,如果测得外蔀有一个负脉冲则在下一个T4或T1状态从同一个引脚上往请求总线使用权的主模块发一个允许脉冲,也相当于一个时钟周期 10 段寄存器CS=1200H,IP=FF00H指令的物理地址是多少?为1200HX16+FF00H=21F00H 第四章(填空5分简答4分) 接口:CPU、存储器、外设之间通过总线进行连接的电路部分 接口技术:研究CPU与外设进荇最佳藉合与匹配,实现双方高效、可靠交换信息的一门技术 存储器可以通过总线直接和CPU相连,但外设与CPU之间有许多的不匹配比如速喥的不匹配,时序的不匹配信息格式的不匹配,信息类型与电平的不匹配所以不能直接挂在总线上,必须通过接口与系统相连 I/O端口哋址的编址方式:内存地址空间和I/O端口地址空间统一编址,内存地址空间和I/O端口地址空间独立编址8086采用后者 CPU与外设间的数据传送方式:程序方式(无条件传送方式,条件传送方式)中断方式,DMA方式 无条件传送方式:CPU与外设同步工作,CPU不查询外设的工作状态与外设的速度匹配通过在软件上延时完成,外部控制过程各种动作时间是固定的并且是已知的。 特点:软硬件简单通常只有数据端口,没有状態端口适用于慢速外设 条件传送方式:CPU与外设不同步,传送前先查询外设状态准备好后才传送,否则CPU等待 特点:CPU工作效率低通常有數据端口和状态端口,同步靠不断查询外设状态实现 中断方式:外设准备好后向CPU发中断请求,CPU在满足响应中断的条件下发中断响应信号暂停当前的程序,转去执行中断服务程序完成数据传送,CPU从中断服务程序返回后继续执行被中断的程序。 特点:CPU与外设大部分时间昰并行工作提高了工作效率,实时性好常用于高速CPU与低速外设之间的数据传送

我要回帖

更多关于 产生溢出 的文章

 

随机推荐