第10章汇编语言
汇编语言源程序格式
第2章 汇编语言程序格式
1.名字项 名字是用户按照一定规则定义的标识符,可由下列符号组成: 字母 A~Z、a~z 数字 0~9 特殊字符 ?、.、@、_、$ 数字不能作名字项的第一个字符。而圆点仅能用作第一个字符,可 以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所 识别。为了便于记忆,名字的定义应该能够见名知义,如用 BUFFER表示缓冲区、SUM表示累加和等。 名字有两种形式:标号或变量。指令语句中的名字通常用标号表示, 而伪指令语句中的名字通常用变量名、段名和过程名表示,多数情 况下用变量名表示。
在同一个程序中,同样的标号或变量的定义只允许出现 一次,否则汇编程序会指示出错。
第2章 汇编语言程序格式
2.操作码项
操作码项可以是指令、伪指令或宏指令的助记符。助记 符表示指令语句的功能,如INC、MOV等,其符号与意 义是由系统定义的,编程时必须照写不误,既不能多写, 也不能少写,如果指令带有前缀(如REP、REPE等), 则指令前缀和指令助记符要用空格分开。 对于指令,汇编程序将其翻译为机器语言指令。对于伪 指令,汇编程序将根据其所要求的功能进行处理。对于 宏指令,则将根据其定义展开。在第5章中将会专门讨论。
第2章 汇编语言程序格式
(2) 变量 变量在除代码段以外的其它段中定义,后面
不跟冒号。它也可以用EQU或LABEL伪指令来 定义。变量是一个可以存放数据的存储单元的名 字,即存放数据的存储单元的地址符号名。变量 用DB、DW、DD定义,此时变量名仅表示该数 据区或存储区的第一个数据单元的首地址。变量 经常在操作数字段出现。
以下所定义的第一个变量
的偏移地址从200H开始
2.标题伪指令(TITLE)
标号在命名时,应尽量取有意义的字符,以便程 变量是一个可以存放数据的存储单元的名字,即存放数据的存储单元的地址符号名。
汇编语言程序设计
6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。
汇编语言习题答案
汇编语⾔习题答案第⼀章.习题1.1⽤降幂法和除法将下列⼗进制数转换为⼆进制数和⼗六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列⼆进制数转换为⼗六进制数和⼗进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列⼗六进制数转换为⼆进制数和⼗进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列⼗六进制数的运算,并转换为⼗进制数进⾏校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为⼗进制数,请⽤8位⼆进制补码计算下列各题,并⽤⼗六进制数表⽰其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6)-85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为⼗六进制表⽰的8位⼆进制数,请说明当它们分别被看作是⽤补码表⽰的带符号数或⽆符号数时,它们所表⽰的⼗进制数是什么?(1) D8 (2) FF答:(1) D8H表⽰的带符号数为-40,D8H表⽰的⽆符号数为216;(2) FFH表⽰的带符号数为-1,FFH表⽰的⽆符号数为255。
第10章 STM32复位启动和中断控制1
在ARM编程领域中,凡是打断程序顺序执行的事件,都被称为异常。
除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。
简单来说:异常包括外部中断和内核fault。
外部中断(IRQ):原本处于正常状态,突然有个外部因素干扰,然后马上处理干扰事项,解决好后又回到原来正常状态。
在中断产生后一般会去执行中断服务函数,实现特定任务。
无特殊说明,后面:异常就是中断,中断就是异常在编译时,每一个函数都有一个入口地址,该地址就是函数名。
尽管函数不是变量,但它在内存中仍有其物理地址,该地址能够赋给指针变量。
函数名相当于一个指向其函数入口指针常量。
函数名后面加圆括号,表示函数调用。
若要得到函数的地址,直接用函数名就可以了。
函数名就是一个地址,是存放该函数代码在存储器空间上的起始地址。
以一个子函数为例,编译器会分配一段内存空间用于存放改子函数代码内容,这段内存空间的起始地址是一个具体值,在程序里边就是函数名,当我们在程序其他位置调用该子函数时候,实际上就是让程序跳转到该函数名地址去运行子函数内容。
Cotrex-M4支持大量的中断,包括16‐5(保留功能)-1=10个系统异常,和最多240个外部中断。
当一个中断发生时候,并由CM4内核接受后,会执行对应的中断服务函数。
所以可以想象需要定义非常多的中断服务函数(而实际上并不需要很多,因为一般都只使能我们需要用到的中断)。
为方便CM4找到对应的中断函数入口,CM4使用了“向量表查表机制”这里使用一张向量表。
向量表其实是一个WORD(32位整数)数组,每个下标对应一种中断,该下标元素的值则是该中断服务函数的入口地址。
●#1~15(系统异常)在CortexM4中定义,IRQ#0~239(外部中断)中断由各个芯片商定义●向量表定义了中断的处理例程的入口地址。
缺省情况下,CM4认为向量表位于零地址处●响应中断时,CM4会根据中断号从表中找出对应的中断处理程序的入口地址●每个表项占用4字节●位置0x00000000处保存的是MSP的初始值异常类型表项地址偏移量异常向量00x00MSP的初始值10x04复位20x08NMI30x0C硬fault40x10MemManage fault50x14总线fault 60x18用法fault7‐100x1c‐0x28保留110x2c SVC120x30调试监视器130x34保留140x38PendSV 150x3c SysTick 160x40IRQ #0170x44IRQ #1中断向量表的跳转●支持10个Cortex-M4系统异常和82个可屏蔽外部中断●16个可编程优先级(使用了4位中断优先级)●包括内核异常在内的所有中断均通过NVIC进行管理。
汇编语言
连接程序(LINK.EXE)
目标程序 1(.OBJ)
目标程序 m(.OBJ)
连 连 接 接
执行程 序 (.EXE)
… 库文件 1(.LIB) 库文件 n(.LIB) …
1.3 计算机的数据表示 1.3.1 数制及其转换 计算机内使用的是二进制数 数制 十进制:十进制是用0 十进制:十进制是用0,1,2,3,4,5,6,7,8,9 十个数码来表示数且遵循“逢十进一” 十个数码来表示数且遵循“逢十进一”规则的数制。 一个任意的十进制整数N可以表示为:AmAm一个任意的十进制整数N可以表示为:AmAm-1…Ao, Ao, 即 Am、Am-1、…、Ao可取值0~9十个数码中的任意一 Am、AmAo可取值0 个;10m、10m个;10m、10m-1、…、100分别是十进制数每位数 100分别是十进制数每位数 字的权;10称为十进制数的基数。 字的权;10称为十进制数的基数。
1.1.4三种语言的特点比较
机器语言是由0 机器语言是由0、1代码组成的面向机器的语言。机器语言程序的编 写、阅读和调试都十分困难,但它是计算机可直接识别执行的语言 程序,占内存少,执行速度快。 与机器语言相比,汇编语言易于理解和记忆,汇编语言程序也易于 编写、阅读和调试。由于其语句与机器指令语句一一对应,所以具 有占内存少、执行速度快的特点,并且能直接控制计算机的硬件设 备,充分发挥计算机的硬件功能。 高级语言的主要特点是:脱离具体的机器,面向过程,是一种类似 于自然语言和数学描述语言的程序设计语言。高级语言程序易于编 写、阅读和调试,且可移植性好。
二进制数与八进制数之间的转换 而二进制数与八进制数之间正好又有一种 特殊的关系,即2 =8,也就是说3 特殊的关系,即23=8,也就是说3位二进制 数刚好对应一位八进制数,反之亦然,所 以在计机中人们也常用八进制数来表示 二进制数。
DSP原理与应用 第三版
运算速度 以上。TMS320C6201执行1024点复数FFT运算时间只有66uS。
高度集成化
集滤波、A/D、D/A、ROM、RAM和DSP内核于一体的
运算精度和动态范围
模拟混合式DSP芯片已有较大的发展和应用。 DSP字长从8位已增到64位,累加器长度也增到40位,
开发工具
提高了运算精度。同时,采用超长字指令字(VLIW)结构和
2. TMS320C55x概况
目前C55x系列芯片主要有:
C5501/2(主频300MHz, McBSP,HPI接口), C5503/6/7/9A (主频200MHz, McBSP, HPI,
优点:成本低廉 缺点:性能差、
速度慢
DSP处理器
优点:速度高、大规模生产成本低; 缺点:开发成本高、通用性差。
针对数字信号处理的要求而设计,是数 字信号处理系统设计中采用的主流芯片。 优点:灵活、高速、便于嵌入式应用
7
1.2 DSP芯片简介
1.2.1 DSP芯片的发展历史、现状和趋势 1.2.2 DSP芯片的特点 1.2.3 DSP芯片的分类 1.2.4 DSP芯片的应用领域 1.2.5 选择DSP芯片考虑的因素
可同时进行取指令和多个数据存取操作,使CPU
在一个机器周期内可多次对程序空间和数据空
采用哈佛结构 间进行访问, 大大地提高了DSP的运行速度。
采用多总线结构
T1
T2
T3
T4
时钟
采用流水线结构
取指令
N
N+1
N+2
N+3
指令译码
N-1
N
N+1
N+2
配有专用的硬件乘法-累加器 取操作数 N-2
自动控制原理目录
第一章绪论(6学时)
微型计算机发展概况、数制和码制。
第二章 8086 系统结构(8学时)
8086CPU结构、8086CPU的引脚及其功能、8086存储器组织、8086系统配置、8086CPU 时序。
第三章 8086的寻址方式和指令系统(10学时)
8086的寻址方式、指令的机器码表示方法、8086的指令系统。
第四章汇编语言程序设计(10学时)
汇编语言程序格式、MASM中的表达式、伪指令语句、程序设计方法、DOS系统功能调用。
第五章存储器(6学时)
存储器分类、随机存取存储器RAM、只读存储器ROM、CPU与存储器的连接。
第六章 I/O接口和总线(6学时)
I/O接口的功能、简单的输入输出芯片、I/O端口及其编址方式、I/O端口地址译码、CPU 与外设间的数据传送方式。
第七章可编程外围接口芯片8255A及应用(4学时)
8255A的结构和功能、8255A的控制字及初始化编程、8255A工作方式和C口状态字、8255A的应用举例。
第八章可编程计数器/定时器8253及应用(4学时)
8253的内部结构与引脚信号、8253的初始化编程、8253的工作方式、8253与系统的连接、8253的应用举例。
第九章微型计算机中断系统(8学时)
中断处理过程、中断优先级和中断嵌套、可编程中断控制器8259A。
第十章 A/D、D/A转换(6学时)
A/D转换器工作原理、D/A转换器工作原理、转换器与CPU连接。
第十一章高档微处理器(6学时)
CPU内部结构、管脚信号说明、寄存器组成。
汇编语言程序设计
《汇编语言程序设计》课程教学大纲学时: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 内存地址空间教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。
汇编语言-第二版-王爽-完整答案
汇编语言-第二版-王爽-完整答案第1章基础知识检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。
(2)1KB的存储器有1024个存储单元。
存储单元的编号从0到1023。
(3)1KB的存储器可以存储1024*8个bit,1024个Byte。
(4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。
(n^m的意思是n的m次幂)(5)8080、8088、80286、80386的地址总线宽度分别是16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。
则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。
(7)从内存中读取1024字节的数据,8086至少要读512次、80386至少要读256次。
(8)在存储器中,数据和程序以二进制形式存放。
第2章寄存器答案检测点2.1(1) 写出每条汇编指令执行后相关寄存器中的值。
mov ax,62627 AX=F4A3Hmov ah,31H AX=31A3Hmov al,23H AX=3123Hadd ax,ax AX=6246Hmov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8Hmov al,bh AX=0482Hmov ah,bl AX=6C82Hadd ah,ah AX=D882Hadd al,6 AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246H(2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
解:mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。
大一上学期第10章 程序设计基础
2
程序设计的基本步骤: 程序设计的基本步骤: (1)分析问题,确定数学模型或方法。 分析问题, 分析问题 确定数学模型或方法。 (2)设计算法,画出流程图。 设计算法, 设计算法 画出流程图。 (3)选择编程工具,按算法编写程序。 选择编程工具, 选择编程工具 按算法编写程序。 (4)调试程序,分析输出结果。 调试程序, 调试程序 分析输出结果。
10
10.2.5 算法示例
1.迭代算法 . 迭代是一种建立在循环基础上的算法。在数学中, 迭代是一种建立在循环基础上的算法。在数学中, 迭代经常被用来进行数值计算,例如求方程的解, 迭代经常被用来进行数值计算,例如求方程的解, 不断用变量原来的值递推求新的值的过程。 不断用变量原来的值递推求新的值的过程。 讨论求若干个数之和或乘积的问题。 讨论求若干个数之和或乘积的问题。
15
(2)折半查找 )
作为折半查找的表必须是顺序存储的有序表, 作为折半查找的表必须是顺序存储的有序表,即表采 用顺序结构存储,表中的元素按关键字值递增(或递减) 用顺序结构存储,表中的元素按关键字值递增(或递减) 排列。 排列。 假设表中的关键字值递增排列, 假设表中的关键字值递增排列,则折半查找的实现方 法是:首先取整个有序表的中间元素A 法是:首先取整个有序表的中间元素 m的关键字同给定 比较, 值x比较,若相等,则查找成功;否则,若Am的关键字小 比较 若相等,则查找成功;否则, 于x,则说明待查元素只可能落在表的后半部分中,接着 ,则说明待查元素只可能落在表的后半部分中, 只要在表的后半部分子表中查找即可; 只要在表的后半部分子表中查找即可;若 Am的关键字大 于x,则说明待查元素只可能落在表的前半部分中,接着 ,则说明待查元素只可能落在表的前半部分中, 只要在表的前半部分子表中查找即可。这样, 只要在表的前半部分子表中查找即可。这样,经过一次关 键字的比较,就缩小一半的查找空间,重复进行下去, 键字的比较,就缩小一半的查找空间,重复进行下去,直 到找到关键字为x的元素 或者表中没有待查元素( 的元素, 到找到关键字为 的元素,或者表中没有待查元素(此时 查找区间为空)为止。 查找区间为空)为止。
汇编语言程序设计
段寄存器赋值
在DOS环境下运行程序时,DOS的装载程序对寄 存器CS:IP、SS:SP作正确的初始化,而将段寄存 器DS、ES初始化为程序段前缀PSP的起点,而不是用 户所需的地址。因此段寄存器DS、ES的赋值还要有程 序本身来完成。如 MOV AX,DATA MOV DS,AX 注意这里的MOV 指令,其源操作数是段名,它是把 段名对应段的基地址送给目的操作数,这是传送指令 中的一个特殊情况。
汇编语言程序语句的格式
注释域以分号打头,注释部分是编程者对指令的作 用所作的言简意赅的说明。汇编语言不对这部分汇编。
• 汇编语言中的标号或名字或其他变量名(统称标识符)
必须是由字母或特殊字符打头的字母数字串,中间不能 有空格。合法的字符包括:字母 A~Z 或 a~z ;数字 0~9 ; 特殊字符有问号(?)、圆点(.)、@、下横线(_) 和美元符号($),圆点只能作为第一个字符。 标号和名字的长度不超过31个字符,超过部分均被删 去。 标识符不能和保留字重名
MASM.EXE是用于8088/8086、80286、80386等CPU的微机上的一种宏汇编 程序。它支持多模块的程序设计,由它生成的目标程序可直接和其他模块的汇编 语言程序的目标程序相连接,也可直接和其它高级语言程序的目标程序模块相连 接。
8088/8086汇编语言程序的上机操作过程:
1)根据任务要求,应用指令系统给定的指令编制程序; 2)利用编辑软件如EDIT等将程序输入计算机,程序名后缀*.asm; 3)应用MASM.EXE对.asm程序进行汇编,得到*.obj和*.lst文件; 4)应用LINK.EXE程序对.obj文件进行连接定位,得到*. exe文件; 5)执行*. exe文件,应用文件进行调试、查看文件执行情 况。
[汇编]《汇编语言》第10章CALL和RET指令
[汇编]《汇编语⾔》第10章CALL和RET指令王爽《汇编语⾔》第四版超级笔记⽬录第10章 CALL和RET指令call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。
它们经常被共同⽤来实现⼦程序的设计。
这⼀章,我们讲解call和ret指令的原理。
10.1 ret和retf、call指令ret指令⽤栈中的数据,修改IP的内容,从⽽实现近转移;retf指令⽤栈中的数据,修改CS和IP的内容,从⽽实现远转移。
CPU执⾏ret指令时,进⾏下⾯两步操作:(IP)=((ss)x16+(sp))(sp)=(sp)+2CPU执⾏retf指令时,进⾏下⾯4步操作:(IP)=((ss)x16+(sp))(sp)=(sp)+2(CS)=((ss)x16+(sp))(sp)=(sp)+2可以看出,如果我们⽤汇编语法来解释ret和retf指令,则:CPU执⾏ret指令时,相当于进⾏:pop IPCPU执⾏retf指令时,相当于进⾏:pop IPpop CS下⾯的程序中,ret指令执⾏后,(IP)=0,CS:IP指向代码段的第⼀条指令。
assume cs:codestack segmentdb 15 dup (0)stack endscode segmentmov ax,4c00hint 21hstart: mov ax,stackmov ss,axmov sp,16mov ax,0push axmov bx,0retcode endsend start下⾯的程序中,retf指令执⾏后,CS:IP指向代码段的第⼀条指令。
assume cs:codestack segmentdb 16 dup (0)stack endscode segmentmov ax,4c00hinc 21hstart: mov ax,stackmov ss,axmov sp,16mov ax,0push cspush axmov bx,0retfcode endsend startCPU执⾏call指令时,进⾏两步操作:(1)将当前的IP或CS和IP压⼊栈中;(2)转移。
80x86汇编语言程序设计教程答案
80x86汇编语言程序设计教程答案【篇一:《80x86汇编语言程序设计》教案及答案(第二版)】汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1. 汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
2. 汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。
它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。
3. 本教材共有十一章,其内容安排如下:(1). 第一、二章为汇编语言所用的基础知识。
(2). 第三章详细介绍80x86系列cpu的指令系统和寻址方式。
(3). 第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。
(4). 第五、六章说明循环、分支、子程序结构和程序设计的基本方法。
(5). 第七章说明宏汇编、重复汇编及条件汇编的设计方法。
(6). 第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。
(7). 第九章说明bios和dos系统功能调用的使用方法。
(8). 第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。
附:教学参考书1. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计,清华大学出版社,1991年3. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4. 沈美明、温冬婵、张赤红编著,ibm–pc汇编语言程序设计—实验教程,清华大学出版社,1992年5. 周明德,微型计算机ibm pc/xt(0520系列)系统原理及应用(修订版),清华大学出版社,19916. 郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957. 王士元、吴芝芳,ibm pc/xt[长城0520] 接口技术及其应用,南开大学出版社,19908. 杨素行,微型计算机系统原理及应用,清华大学出版社,19959. 戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610. 张昆藏,ibm pc/xt微型计算机接口技术,清华大学出版社,199111. 孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/pentium),学苑出版社,199312. 吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 ....................................................................................................... .. (1)1.1 进位计数制与不同基数的数之间的转换 (1)1.2 二进制数和十六进制数的运算 ....................................................................................................... .. (2)1.3 计算机中数和字符的表示 ....................................................................................................... . (3)1.4 几种基本的逻辑运算 ....................................................................................................... (3)第 2 章 80x86计算机组织 ....................................................................................................... . (4)2.1 80x86微处理器 ....................................................................................................... . (4)2.2 基于微处理器的计算机系统构成 ....................................................................................................... . (4)2.3 中央处理机 ....................................................................................................... . (5)2.4 存储器 ....................................................................................................... (6)2.5 外部设备 ....................................................................................................... .. (7)第 3 章 80x86的指令系统和寻址方式 ....................................................................................................... .. (8)3.1 80x86的寻址方式 ....................................................................................................... (8)3.2 程序占有的空间和执行时间 ....................................................................................................... . (10)3.3 80x86的指令系统 .......................................................................................... .. (10)第 4 章汇编语言程序格式 ....................................................................................................... .. (26)4.1 汇编程序功能 ....................................................................................................... . (26)4.2 伪操作 ....................................................................................................... . (26)4.3 汇编语言程序格式 ....................................................................................................... .. (30)4.4 汇编语言程序的上机过程 ....................................................................................................... .. (33)第 5 章循环与分支程序设计 ....................................................................................................... . (35)5.1 循环程序设计 ....................................................................................................... . (35)5.2 分支程序设计 ....................................................................................................... . (36)5.3 如何在实模式下发挥80386及其后继机型的优势 (36)第 6 章子程序结构 ....................................................................................................... .. (37)6.1 子程序的设计方法 ....................................................................................................... .. (37)6.2 子程序的嵌套 ....................................................................................................... . (38)6.3 子程序举例 ....................................................................................................... .. (38)第 7 章高级汇编语言技术 ....................................................................................................... .. (39)7.1 宏汇编 ....................................................................................................... . (39)7.2 重复汇编 ....................................................................................................... . (40)7.3 条件汇编 ....................................................................................................... . (41)第 8 章输入/输出程序设计 ....................................................................................................... . (42)8.1 i/o设备的数据传送方式 ....................................................................................................... .. (42)8.2 程序直接控制i/o方式 ....................................................................................................... . (43)8.3 中断传送方式 ....................................................................................................... . (43)第 9 章 bios和dos中断 ....................................................................................................... . (46)9.1 键盘i/o ....................................................................................................... .. (46)9.2 显示器i/o ....................................................................................................... . (48)9.3 打印机i/o ....................................................................................................... . (49)9.4 串行通信口i/o ....................................................................................................... .. (50)第 10 章图形与发声系统的程序设计 ....................................................................................................... ........... 51 10.1 显示方 (51)10.2 视频显示存储器 ....................................................................................................... .................................. 51 10.3 ega/vga图形程序设计 ....................................................................................................... .................... 52 10.4 通用发声程序 ....................................................................................................... ...................................... 53 10.5 乐曲程序 ....................................................................................................... . (54)第 11 章磁盘文件存取技术 ....................................................................................................... ........................... 55 11.1 磁盘的记录方式 ....................................................................................................... .................................. 55 11.2 文件代号式磁盘存取 ....................................................................................................... .......................... 56 11.3 字符设备的文件代号式i/o ....................................................................................................... ................ 57 11.4 bios磁盘存取功能 ....................................................................................................... .. (58)附录:《ibm—pc汇编语言程序设计》习题参考答案 ............................................................................... 59 第一章.第二章.第三章.第四章.第五章.第六章.第七章.第八章.第九章.第十章.第十一章. 习题 ....................................................................................................... ................. 59 习................. 60 习题 ....................................................................................................... ................. 61 习题 ....................................................................................................... ................. 74 习题 ....................................................................................................... ................. 79 习题 ....................................................................................................... ................. 97 习题 ....................................................................................................... ............... 110 习题 ....................................................................................................... ............... 117 习题 ....................................................................................................... ............... 122 习题 ....................................................................................................... ............... 125 习题 ....................................................................................................... (136)错误!未指定书签。
《汇编语言》各章习题答案
汇编语言各章习题答案习题一答案:1.1无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH1.2 5E8AH,0BE6H,3DEH,4940H1.3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -1171.4 00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2071.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H1.6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 1.7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码1.8(1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H1.9(1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=11.10回车、换行、响铃、ESC键、空格键、@、P、p习题二答案:2.9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)2.10CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP2.11字节单元保存8位数,字单元保存16位数。
汇编语言王爽检测点答案
汇编语言王爽. 检测点答案第一章.检测点1.1(1) 13(2) 1024,0,1023(3) 8192,1024(4) 2^30,2^20,2^10(5) 64,1,16,4(6) 1,1,2,2,4(7) 512,256(8) 二进制注:符号'^'指求幂运算(如: 2^30指2的30次方)第二章检测点2.1(1)大家做这题的时候一定要注意,要看清楚数制,比如是二进制还是十进制,还是十六进,我当时没注意,做错了!!呵呵!!第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1)00010H 1000fH(2)0001H 2000H检测点2.3共修改了4次ip 第一次mov ax,bx 第二次是sub ax,ax 第三次是jmp ax 第四次是执行jmp ax 最后ip的值是0 因为ax的值是零!!检测点3.1(1)第一空:2662H第二空:E626H第三空:E626H第四空:2662H第五空:D6E6H第六空:FD48H第七空:2C14H第八空:0000H第九空:00E6H第十空:0000H第十一空:0026H第十二空:000CH注意:ax中存取的是字型数据,高地址存放高字节,低地址存放低字节!!(一定要小心)①写出cpu的执行序列Mov ax,6622Jmp 0ff0:0100Mov ax,2000HMov ds,axMov ax ,[0008]Mov ax,[0002]②指令执行顺序寄存器CSIPDSAXBX初值2000H00001000Hmov ax,6622h2000H00031000H6622H0000jmp 0ff0:01001000h00001000H0000mov ax,2000h1000H00031000H2000H0000mov ds,ax1000H00052000H2000H0000mov ax,[0008]1000H00082000HC389H0000mov ax,[0002]1000H000B2000HEA66H0000③数据和程序在计算机中都是以二进制的形式存放的,在区别程序和数据时,关键是看段地址,如果段地址是ds段,说明该内存中存放的是数据,如果段地址是cs段,说明该内存中存放的是程序指令检测点3.2(1)Mov ax,2000HMov ss,axMov sp,0010H(2)Mov ax,1000HMov ss,axMov sp,0000H注意:出栈时和入栈时的顺序,空栈时栈顶指向的是最高端地址!栈满是栈顶指针指向的是最底端地址!!2。
《汇编语言》PPT课件
机
原
理 例3-3
ORG 1000H
及
DW
1234H
应 用 编
SJ_DATA: DW
56H,2000
经汇编后,从地址1000H处存贮器的内容为:
著
〔1000H〕= 12H
组
〔1001H〕= 34H
〔1002H〕= 00H
〔1003H〕= 56H
〔1004H〕= 07H
§3.1.2 汇编伪指令
湘 四、EQU 赋值伪指令 潭 字符名称 EQU 项〔数或汇编符号〕
;〔35H〕 A
MOV DPTR,#DPTRA ;0AA00H DPTR
§3.1.2 汇编伪指令
湘 七、BIT定义位地址符号伪指令 潭 字符名称 BIT 位地址
大 学
这里的"字符名称"与标号不同〔其后没有冒号〕,但
单 它是必须的,其功能是把BIT之后的"位地址"值赋给"字
片 机
符名称".
原 理
例3-6:
潭 大
[标号:] DB X1、 X2 … Xn
学
ORG 1000H
单
DB
片
SJ-DATA: DB
0AAH 25,25H
机
ZFC-DATA: DB
'MCS-51'
原
理 及 应 用 编 著
经汇编后,从地址1000H处存贮器的内容为: 〔1000H〕= AAH 〔1001H〕= 19H 〔1002H〕= 25H 〔1003H〕= 4DH
用
编 著 组
eg: MOV MOV MOV
P1,A 70H ,R2 0E0H,78H
; MOV 90H,A ; (A)
1-11章汇编测试题目(汇编网)
第1章汇编测试题目(后附答案)1、1个CPU读取1024字节的数据至少读取了512次,数据总线的宽度_____。
A、8B、10C、16D、322、在8086的内存空间中下面哪段内存是不可写的_____。
A、0~9FFFFB、A0000~B7FFFC、B8000~BFFFFD、C0000~FFFFF3、下列哪个计算机部件能确定一组二进制数是要执行的指令还是用于操作的数据_____。
A、显示器B、硬盘C、内存D、中央处理器4、关于总线的说法错误的是_____。
A、地址总线的宽度决定了CPU的寻址能力。
B、数据总线的宽度决定了CPU与外界进行数据传送时的一次数据传送量。
C、控制总线的宽度决定了CPU对系统中其它器件的控制能力。
D、总线就是负责CPU内部信息传送的一系列导线。
5、1KB的存储器有____个存储单元A、1000B、1024C、512D、2566、1个CPU的寻址能力为32KB,那么它的地址总线宽度为_____。
A、13B、15C、18D、32k7、1KB的存储器可以存储____个bit 。
A、1024B、8192C、1000D、88、1个CPU访问的最大内存地址是1023,地址总线的宽度_____。
A、8B、10C、13D、149、计算机中一个存储单元可以存储多少信息_____。
A、1bitB、1ByteC、1KBD、512B10、下列说法正确的是:____A、在计算机中,存储器分为指令存储器和数据存储器。
B、电子计算机的最小信息单位是Byte。
C、微型存储器的容量是以Byte为最小单位来计算的。
D、在“1KB=1024B”中,“B”代表的是Bit。
11、一个CPU的寻址能力为8KB,那么它的地址总线的宽度为____。
A、8B、10C、12D、1312、下列说法中正确的是____。
A、不同的微处理器有相同的机器指令集。
B、机器语言和汇编语言都需要编译程序来编译成机器指令。
C、每一个汇编指令都对应唯一的一个机器指令。
计算机组成原理课件(第10章__微机计算机基本工作原理
微型计算机功能的扩展
归根到底,计算机的功能在很大程度上取决于其中 央处理器部分,而后者的功能又取决于其控制器 的功能。此外,其它基本组成电路,如算术逻辑 部件( ALU )、寄存器的个数等等,都必须作相 应的改进,才能扩展计算机的功能。使之接近于 现代微型计算机。 这个功能更大的微型计算机,在硬件上增加不多, 而是算术逻辑部件及控制器的功能有相当的扩展。 这样,就既可能进行逻辑运算,也有跳转和循环 运算的功能
10.4
执行指令的例行程序
在程序和数据装入之后,启动按钮 将起动信号传给控制部件 CON,然后控 制部件产生控制字,以便取出和执行每 条指令。 执行一条指令的时间为一个机器周期。 机器周期又可分为取指周期和执行周期。 取指过程和执行过程机器都得通过不同 的机器节拍。在这些节拍内,每个寄存 器( PC 、 MAR 、 IR 、 A 、 B 、 O 等)的 内容可能发生变化。
10.2
指令系统
指令系统就是用来编制计算程 序的一个指令集合。在未编制出计 算程序之前,计算机是一堆无价值 的电路硬件。 这台微型机有五条指令,即其 控制部件能完成一系列例行程序以 执行五种命令: LDA—将数据装入累加器A ADD—进行加法运算
10.3
程序设计
这几个参与运算的数当然可以是任意的,所以 公式是用代数符号写的。这里所用的代数符号,故 意与存储单元的序列相一致。事实也是如此,因为 要参与运算的数必须先输入到存储器中去。 既然上面讲的微型计算机并不认识助记符的意 义,因此必须将指令清单中每一条指令都翻译成二 进制码──机器码。另外,存储器中既要写入计算程 序,也要存放参与运算的数据,那么,还得决定存 储器中的存储单元应如何分配 — 称为存储空间分配。 总之,程序设计中得包括:编制汇编语言写的 源程序、助记符的翻译、存储器的分配等几部分。 下面介绍一下程序设计步骤。
汇编语言程序设计 第1篇 汇编语言基础知识
汇编 语言实现 汇编后的目 标文件只有 208字节
2019/1/23
11
计算机科学与技术系
《汇编语言程序设计》
1.1
汇编语言概述
1.1.2 汇编语言的特点
建议: ●充分注意“汇编”课实践性强的特点, ●多读程序,多写程序,多上机调试程序, ●熟悉PC机的编程结构, ●掌握汇编语言及其程序设计的基本概念、
2019/1/23
第 1章
汇编语言基础知识
19
计算机科学与技术系
《汇编语言程序设计》
1.2
进位计数制及其转换
1.2.2 不同数制之间的转换
(3)一般的十进制数转换成二进制数 为了将一个既有整数又有小数部分的十进制数转换成二进制 数,可以将其整数部分和小数部分分别进行转换,然后再组合 起来。 例:117.8125D = 1110101.1101B
1.1.2 汇编语言的特点
经常与高级语言配合使用,应用十分广泛。
2019/1/23
第 1章
汇编语言基础知识
9
计算机科学与技术系
《汇编语言程序设计》
1.1
汇编语言概述
1.1.2 汇编语言的特点
编程实现 c =a+b,并在屏幕上显示出结果。 #include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) { int a,b,c; a=1; b=2; c=a+b; printf(“c=%d\n",c); return 0; }
计算机科学与技术系
《汇编语言程序设计》
1.2
进位计数制及其转换
1.2.2 不同数制之间的转换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ONE:
MOV MOV MOV LEA MOV AND ADD INC ;累加器清零 CL, BUFFER+1 ;循环次数 CH, 0 BX, BUFFER+2 ;装载字符存放区首地址 AL, [BX] ;取出一个字符 AL, 0FH ;ASCII码转换成二进制数 码转换成二进制数 SUM, AL ;累加 BX ;修改指针 ONE ;计数与循环 AX, 4C00H 21H ENDS START
字符的输入
(1) AH←01 ) INT 21H 键盘输入字符后返回,ASCII码在 中,同时显示( “回显”, 码在AL中 同时显示( 回显” 键盘输入字符后返回, 码在 Echo)。 )。 (2) AH←07 ) INT 21H 键盘输入字符后返回,ASCII码在 中,无回显。 键盘输入字符后返回, 码在AL中 无回显。 码在 (3) AH←08 ) INT 21H 键盘输入字符后返回,ASCII码在 中,无回显。同时检测 码在AL中 无回显。 键盘输入字符后返回, 码在 Ctrl+Break和Ctrl+C键的组合。 键的组合。 和 键的组合
MOV MOV INT
6
AH, 2 21H
;功能号 功能号02H装入 寄存器 装入AH寄存器 装入 ;调用 调用21H号系统服务程序 号系统服务程序
DL, X ;变量 的值装入 寄存器 变量X的值装入 的值装入DL寄存器
[例1] 在显示器上输出文字“Hello !” 例 在显示器上输出文字“
CODE ASSUME START:LEA MOV ONE: MOV MOV INT INC LOOP MOV INT STRING CODE END
LOOP ONE MOV INT CODE END
12
AX, 4C00H 21H ENDS START
操作系统提供的从键盘输入一行字符的服务程序如下。 操作系统提供的从键盘输入一行字符的服务程序如下。
DS: DX←输入缓冲区首地址 输入缓冲区首地址 AH←0AH INT 21H
输入缓冲区格式: 输入缓冲区格式:
如果从键盘上输入“ABCDE↙”,返回后,缓冲区各字节依次为: 如果从键盘上输入“ ↙ ,返回后,缓冲区各字节依次为: 81,5,41H,42H,43H,44H,45H,0DH,…… 。 , , , , , , , ,
13
[例3] 从键盘输入最多 个数字,求它们的和,存入 例 从键盘输入最多5个数字 求它们的和,存入SUM。 个数字, 。
15
利用DOS功能调用, DOS功能调用 【例4】利用DOS功能调用,在显示器上显示 YOU? “WHO ARE YOU?”然后接收键入的名字并 输出在显示器上. 输出在显示器上.
DSEG SEGMENT MOV DX,OFFSET NAME DB’WHO QUEST DB WHO ARE YOU? YOU?’,’$’ $ MOV AH,0AH NAME DB 20,0,20 DUP INT 21H (’$’) ) MOV DX,OFFSET DSEG ENDS NAME+2 CODE SEGMENT MOV AH,09H ASSUME INT 21H CS:CODE,DS:DSEG MOV AH,4CH START:MOV AX,DSEG INT 21H MOV DS,AX CODE ENDS MOV DX,OFFSET QUEST END START MOV AH,9 INT 21H
CODE ASSUME START:MOV MOV LEA MOV INT MOV INT STRING CODE END
9
SEGMENT CS: CODE, DS: CODE AX, CODE DS, AX DX, STRING AH, 9 21H AX, 4C00H 21H DB 0AH, 0DH, “Hello !”, 0AH, 0DH, ‘$’ ENDS START
• STRING在代码段里定义,取字符需要增加段跨越前缀“CS: 在代码段里定义,取字符需要增加段跨越前缀“ 在代码段里定义 段跨越前缀 [BX]”,否则会到“DS: [BX]”处取字符,输出不确定的内容。 ,否则会到“ 处取字符, 处取字符 输出不确定的内容。 • 代码为 代码为0DH的字符称为“回车(Carriage Return, CR)”,把 的字符称为“回车( 的字符称为 ) 光标移动到本行的第一个字符位置, 光标移动到本行的第一个字符位置, • 代码为 代码为0AH的字符称为“换行(Line Feed, LF)”,把光标移 的字符称为“换行( 的字符称为 ) 动到下一行的相同位置上。 动到下一行的相同位置上。
输入和输出程序设计
一、字符的输出 二、字符的输入
1
大多数的程序,都有一个“ 大多数的程序,都有一个“人-机”交互的过程,也就 交互的过程, 是说,从键盘上输入程序所需要的控制信息和数据, 是说,从键盘上输入程序所需要的控制信息和数据,把 程序的运行结果和运行状态向显示器输出。 程序的运行结果和运行状态向显示器输出。 交互使用的键盘称为“标准输入设备”,显示器称为 交互使用的键盘称为“标准输入设备” “标准输出设备”,合称为“控制台(Console)”。 标准输出设备” 合称为“控制台( )
MOV CX, 11 …… STRING DB 0DH, 0AH, “Hello !”, 0DH, 0AH
8
(2)输出一个字符串 ) DS: DX ← 待输出字符串的首地址 AH ← 09H INT 21H 字符串以字符“ 为结束标志 该字符本身不输出。 为结束标志, 字符串以字符“$”为结束标志,该字符本身不输出。
2
字符的输出
向显示器输出信息有三种方法: 向显示器输出信息有三种方法: • 通过操作系统的服务程序(INT 21H)输出; 通过操作系统的服务程序( )输出; • 通过“基本输入输出系统(BIOS)” 输出; 通过“基本输入输出系统( ) 输出; • 把显示内容(ASCII代码)直接写入“显示存储器(Video 代码) 把显示内容( 代码 直接写入“显示存储器( RAM,VRAM)”,由显示器接口电路转换输出。 , 由显示器接口电路转换输出。 ) 本章首先介绍使用操作系统服务程序进行输出的方法。 本章首先介绍使用操作系统服务程序进行输出的方法。
7
SEGMENT CS: CODE BX, STRING CX, 7 DL, CS: [BX] ;取出一个字符的 取出一个字符的ASCII代码 代码 AH, 2 ;单个字符输出的功能号 21H 调用系统服务, ;调用系统服务,输出一个字符 BX ;修改指针 ONE ;计数与循环控制 AX, 4C00H 21H DB “Hello !” ENDS START
3
DOS功能调用概述
1.什么是DOS功能调用 定义:编了号的可由程序员调用的子程序就称为DOS的功能调用或称为 系统调用 包含的子程序:设备驱动(基本I/O)、文件管理和其他 2.调用方法 (1) 设置入口参数。 (2) 功能调用号送AH寄存器。 (3) 发软中断指令“INT 21H”。 例:MOV AH,01 INT 21H
BUFFER DB 81, ?, 81 DUP(?)
第一字节:输入字符存放区的大小。 第一字节:输入字符存放区的大小。
第二字节:由服务程序填入实际输入的字符个数,不包括回车。 第二字节:由服务程序填入实际输入的字符个数,不包括回车。 第三字节之后:输入字符存放区,存放输入的字符和回车。 第三字节之后:输入字符存放区,存放输入的字符和回车。
MOV DX,OFFSET NAME MOV AH,0AH INT 21H mov byte ptr name,0dh mov byte ptr name+1,0ah MOV DX,OFFSET NAME MOV AH,09H INT 21H MOV AH,4CH INT 21H ENDS END START
11
MOV MOV ONE: MOV INT AND ADD
CX, 5 SUM, 0 AH, 1 21H AL, 0FH SUM, AL
;循环次数 ;累加器清零 ;输入单个字符的功能号 ;输入一个字符,ASCII码在 中 输入一个字符, 码在AL中 码在 ;ASCII码转换成二进制数 码转换成二进制数 ;累加 ;计数与循环
DATA SUM BUFFER DATA CODE ASSUME START: MOV SEGMENT DB DB ENDS SEGMENT DS: DATA, CS: CODE AX, DATA MOV LEA MOV INT
14
? 6, ?, 6 DUP(?)
DS, AX DX, BUFFER AH, 0AH 21H ;装载输入缓冲区首地址 ;行输入功能代号 ;调用系统服务
16
接收键入的名字并换行输出在显示器上. 接收键入的名字并换行输出在显示器上.
17
DSEG SEGMENT DB’WHO QUEST DB WHO ARE YOU? YOU?’,’$’ $ NAME DB 20,0,20 DUP (’$’) ) DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START:MOV AX,DSEG MOV DS,AX CODE MOV DX,OFFSET QUEST MOV AH,9 INT 21H
例:下面的程序在显示器上输出数字字符“9”: 下面的程序在显示器上输出数字字符“ : MOV AH, 2 功能号02H ;功能号 MOV DL, 39H 字符“ 的 ;字符“9”的ASCII代码 代码 INT 21H 调用21H号系统服务程序 ;调用 号系统服务程序 字符“ 显示在光标(Cursor)位置,光标向右移动一个字符位置。 显示在光标 位置, 字符“9”显示在光标 位置 光标向右移动一个字符位置。 X为DB定义的一个变量,下面的程序能够输出 的值吗? 为 定义的一个变量 下面的程序能够输出X的值吗 定义的一个变量, 的值吗?