80x86汇编语言5

嵌入式简单汇编程序实例

ARM实验报告 姓名:郭健傧学号:L2101898 1.实验目的 (1)了解ADS1.2集成开发环境及ARMulator软件仿真; (2)熟悉ARM的乘法指令和逻辑指令; (3)结合ARM处理器硬件特性,比较处理函数的特性; 2.实验设备 硬件:pc机一台; 软件:Windowsxp系统,ADS1.2集成开发环境; 3.实验内容 (1)建立一个新的工程; (2)建立一个汇编文件,并添加到工程; (3)根据所给的两个C语言函数编写相应的汇编程序,并比较一下代码中fact1和fact2两个函数的特性; 4.实验步骤 (1)启动ADS1.2IDE集成开发环境,使用ARM Executable Image 工程模块建立一个工程heiye。 (2)建立汇编源文件test.s,编写程序实验,并添加到工程heiye中。 (3)设置工程连接地址Ro Base为0x40000000,RWBase为0x40003000。设置调试入口地址Image entry point为0x40000000。 (4)编译链接工程,并启动AXD进行软件仿真调试。 5.编写程序如下: C程序源代码: int fact1(int limit) { int fact=1; for(i=1;i

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=3997 https://www.360docs.net/doc/a85412834.html,快速开发新闻系统在线播放 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=1243 https://www.360docs.net/doc/a85412834.html, 2.0快速入门(12)-https://www.360docs.net/doc/a85412834.html, 2.0网站快速导航 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=4825 https://www.360docs.net/doc/a85412834.html, 高级排错技巧 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.360docs.net/doc/a85412834.html,开发SQL Server 2005 OLAP应用 https://www.360docs.net/doc/a85412834.html,/so/so138.aspx?id=2535

汇编第五章课后题答案

1.从屏幕上输入小写字母,转化为大写字母输出 (解法1) DATA SEGMENT MESSAGE DB "ENTER A STRING:",0AH,0DH,'$' MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,MESSAGE ;输出ENTER A STRING MOV AH,09H INT 21H LEA DX,MAXLENGTH ;输入字符串 MOV AH,0AH ;键盘输入到缓冲区,DS:DX=缓冲区首址 INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数 MOV AH,02H ;输出回车换行 MOV DL,0AH INT 21H MOV AH,02H MOV DL,0DH INT 21H

MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL MOV CH,0 MOV BH,02H LEA SI,MAXLENGTH+2;取字符串的基地址放入SI XUN: MOV AL,[SI] CMP AL,'Z' JBE S1 ;小于等于'Z'转移 JMP S3 S1:CMP AL,'A' JAE DA ;大于等于'A'转移 JMP OUTPUT DA:ADD AL,20H JMP OUTPUT S3:CMP AL,'z' ;小于等于小Z转移 JBE S4 S4:CMP AL,'a' ;大于等于小a转移 JAE XIAO JMP OUTPUT XIAO: SUB AL,32 JMP OUTPUT OUTPUT: MOV DL,AL MOV AH,02H ;显示输出 INT 21H

华中科技大学 80X86汇编语言程序设计试卷

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______ 一、改错题(10分,每题1分,在错误处划线,线下写上正确答案) 1. SHR BH, 8 2. ADD [BX], –15 3. LEA POINT, BUF 4. IN DX, 200 5. PUSH DH 6. MUL 25 7. XLAT BX, TAB 8. REPNZ MOVSW 9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI] 二、单选题(20分,每题1分) 1.MOV指令的特点是________。 A.影响DF B.影响SF C.影响CF D.不影响标志位2.使用寄存器间接寻址方式访问堆栈中某变量时,要选用________寄存器。 A.BX B.BP C.SI D.SP 3.8086标志寄存器中的三个控制标志是________。 A. IF、PF、SF B.DF、OF、CF C.DF、IF、TF D.TF、AF、IF 4.若有符号数运算的结果溢出,则置________为1。 A.OF B.CF C.SF D.IF 5.若某存贮器操作数的偏移地址在SI中,访问该操作数应采用________寻址方式。 A.立即B.寄存器C.寄存器问址D.直接 6.串操作指令中,目的串的逻辑地址应为________。 A.DS:[SI] B.DS:[DI] C.ES:[DI] D.ES:[SI] 7.不在本模块定义而在本模块中引用的符号称________符号。 A.公共B.局部C.自定义D.外部 8.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX,CL”后,(AX)=________。 A.0FFFFH B.0FFF0H C.0F0FFH D.0FFFH 9.已知AL中存放着一个压缩BCD码,为实现AL减1操作,应选用________指令序列。 A.DEC AL B.SBB AL,0 C.SUB AL,1 D.SUB AL,1 AAS DAS AAS DAS 10.要将BL中的8位数据送到1234H端口号的外部设备中去,应选用________指令序列。 A.OUT 1234H,BL B.MOV DX,1234H OUT DX,BL C.MOV AL,BL D.MOV DX,1234H MOV DX,1234H MOV AL,BL OUT DX,AL OUT AL,DX 11.已知AX,BX中均为有符号 ...数据,当进行字.除法时,应采用________指令序列。 A.XOR DX,DX B.CBW C.IDIV BX D.CWD DIV BX IDIV BX IDIV BX

80X86汇编语言程序设计教程+课后习题答案(清华大学版)

第二章答案 Tarzan 版 题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些 寄存器可作为存储器寻址方式的指针寄存器? 答:8086/8088通用寄存器的通用性表现在: 这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存 算术逻辑运算中的操作数和运算结果; 8个通用寄存器的专门用途如下: AX 字乘法,字除法,字I/O BX 存储器指针 CX 串操作或循环控制中的计数器 DX 字乘法,字除法,间接I/O SI 存储器指针(串操作中的源指针) DI 存储器指针(串操作中的目的指针) BP 存储器指针(存取堆栈的指针) SP 堆栈指针 其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器 题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位 寄存器? 答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器; 题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器 AX的内容: MOV AX,1234H MOV AL,98H MOV AH,76H ADD AL,81H SUB AL,35H

ADD AL,AH ADC AH,AL ADD AX,0D2H SUB AX,0FFH 答: MOV AX,1234H AX=1234H MOV AL,98H AX=1298H MOV AH,76H AX=7698H ADD AL,81H AX=7619H SUB AL,35H AX=76E4H ADD AL,AH AX=765AH ADC AH,AL AX=D15AH ADD AX,0D2H AX=D22CH SUB AX,0FFH AX=D12DH 题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志 的状态? 答: 8086/8088标志寄存器中定义了9个标志,如下: CF: Carry Flag ZF: Zero Flag SF: Sign Flag OF: Overflow Flag PF: Parity Flag AF: Auxiliary Carry Flag DF: Direction Flag IF: Interrupt-enable Flag TF: Trap Flag 这些标志可分为两类,分别为: 1、运算结果标志; 2、状态控制标志; 采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF; 采用CLC可清除CF,置CF到0 采用STC可置CF到1 采用CLD可置DF到0 采用sTD可置DF到1

51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

第五章汇编语言程序设计

目标程序 第五章汇编语言程序设计 ● 汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。 ● 使用汇编语言编写的程序称作汇编语言源程序。汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。 ● 把汇编语言源程序翻译成目标程序的软件称为汇编程序。 汇编过程的含义如图: 5.1宏汇编语言的基本语法 1、常数、变量和标号 常数、变量和标号是汇编语言能识别的数据项,是指令和伪指令语句中操作数的基 本组成部分,其大小和属性与机器语言代码生成有直接关系。 一、常 数 常数是没有任何属性的纯数值。在汇编期间,它的值已经完全确定,而且在程序的 运行中也不会发生变化,它可以有以下几种类型: (1) 二进制数: 以字母B 结尾的由一串“0”和“1”组成的序列。例如:0010110B (2) 八进制数: 以字母O 或Q 结尾,由若干个0到7的数字组成的序列。例如:255Q 、377Q (3) 十进制数: 由若干个0到9的数字组成的序列,可以以字母D 结尾,也可以省略字母例如:1234D 或1234 。 (4) 十六进制数: 以字母H 结尾,由若干个0到9的数字和字母A 到F 组成的序列,且必须以数字开 头。例如: 56H,0B3FH (5)字符串常量: 用引号括起来的一个或多个字符。这些字符以ASCII 码形式存在内存中。 例如:…A?的值是41H, … B?的值是42H 二、变 量 变量通常是存放在某些存储单元的数据,这些数据在程序运行期间可以修改。变量 使用数据定义伪指令DB 、DW 、DD 等定义的。 经过定义的变量,每个变量均有三个属性: (1) 段属性(SEGMENT ) 表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。

1632位微机原理、汇编语言及接口技术第五章课后习题答案-

1632位微机原理、汇编语言及接口技术第五章课后习题答案-

习题 5.2 在半导体存储器中, RAM 指的是 随机存取存储器 ,他可读可写,但断电后信息一般会丢失 ; 而 ROM 指的是 只读存储器 , 正常工作时只能从中读取信息, 但断电后信息不会丢失。以EPROM 芯片 2764为例, 其存储容量为 8K ×8位, 共有 8 条数据线和 13 条 地址线。用它组成 64KB 的 ROM 存储区共需 8 片 2764芯片。 习题 5.7 什么是存储器连接中的 “ 位扩充 ” 和 “ 地址扩充 ” ? 欲组成 32KB 的 RAM 存储区,在采用容量 1K ×4位的静态 RAM 芯片或容量16K ×1位的静态 RAM 芯片的情况下,各需要多少芯片? 在位方向和地址方向上各要进行什么样的扩充?请画出采用 2114芯片时的连接示意图。解答: ?位扩充—— 存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据 “ 位 ” 方向的扩充; ?地址扩充 (字扩充——当一个存储器芯片不能满足系统存储容量时, 利用多个存储器芯片在 “ 地址 ” 方向的扩充 ?组成 32KB 存储空间,用 SRAM 2114(1K ×4需要 64个芯片; ?组成 32KB 存储空间,用 DRAM 4116(16K ×1需要 16个芯片; ?它们都需要进行位扩充和地址扩充

习题 5.8 ?存储芯片为什么要设置片选信号? ?它与系统地址总线有哪些连接方式? ?采用何种连接方式可避免地址重复? ?采用哪些连接方式可节省用于译码的硬件? 解答: ?片选信号说明该存储器芯片是否被选中正常工作, 设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间 ?存储器片选信号通常与 CPU 地址总线的高位地址线相关联,可以采用“ 全译码 ” 、 “ 部分译码 ” 、 “ 线选译码 ” 方式 ?采用全译码方式可以避免地址重复 ?采用部分或线选译码可以节省译码硬件

STC12系列单片机的PWM输出汇编语言示例程序

STC12系列单片机的PWM输出汇编语言示例程序

对于以下程序我的理解是:equ是一个符号定义伪指令pulse_width_max equ 0f0HMOV A,#pulse_width_max 它的意思是:将pulse_width_max里的值作为数值赋到寄存器A里.MOV A,pulse_width_max 它的意思是:将pulse_width_max里的值作为地址赋到寄存器A里. 相关帖子>>>: ?我的8个PWM给你参考(2774字)coody[63次]2006-8-29 15:01:43 ;************************************************************** ?;************************************************************** ?T0interrupt: ;max 53T ? PUSH PSW ? PUSH ACC ? ?;*************************** 30T *********************************** ? MOV P1,PWM_TEMP ? ? INC PWM_DUTY ? MOV A,PWM_DUTY ? JNZ L_PWM ? MOV PWM_TEMP,PWM_TEMP1 ? SJMP L_QuitPWM ?

?L_PWM: ? CJNE A,PWM0,L_NotClearPWM0 ? SETB B_PWM0 ?L_NotClearPWM0: ? ? CJNE A,PWM1,L_NotClearPWM1 ? SETB B_PWM1 ?L_NotClearPWM1: ? ? CJNE A,PWM2,L_NotClearPWM2 ? SETB B_PWM2 ?L_NotClearPWM2: ? ? CJNE A,PWM3,L_NotClearPWM3 ? SETB B_PWM3 ?L_NotClearPWM3: ? ? CJNE A,PWM4,L_NotClearPWM4 ? SETB B_PWM4 ?L_NotClearPWM4: ? ? CJNE A,PWM5,L_NotClearPWM5 ? SETB B_PWM5 ?L_NotClearPWM5: ? ? CJNE A,PWM6,L_NotClearPWM6 ? SETB B_PWM6 ?L_NotClearPWM6: ? ? CJNE A,PWM7,L_NotClearPWM7 ? SETB B_PWM7 ?L_NotClearPWM7: ?L_QuitPWM: ?;************************************************************** ? ?L_QuitT0Interrupt: ? POP ACC ? POP PSW

80X86汇编语言程序设计 第一章基础知识

80X86汇编语言程序设计 第一章基础知识(1.2.) 一.进制转换: (1)十进制转换成二进制:除2取余法 (2)十进制转换成十六进制:除16取余法 (3)二进制转换成十进制:权的展开式,各位二进制数码乘以与其对应的权之和 (4)十六制转转换成十进制:权的展开式,各位十六进制数码乘以与其对应的权之和 (5)二进制转换成十六进制:四位归一法(8421码),把二进制数码从低位到高位每4位组成一组,直接用十六进制数来表示 (6)十六进制转换成二进制:一位分四法(8421码),把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数 二.数据的表示 (1)数的补码表示(有符号数) 把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。一般用最高有效位来表示数的符号。正数用0表示,负数用1表示。机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。 补码表示法中,正数采用符号绝对值表示;负数X用2的n次方-X来表示,其中n位机器的字长。 0的补码就是00000000 8位表示数的有符号整数的范围为:-128~+127. 16位表示数的有符号整数的范围为:-32768~+32767. 例如:机器字长为16位,写出N=-117D的补码表示 +117D可表示为:0000 0000 0111 0101 按位求反后为: 1111 1111 1000 1010 末位加1后为: 1111 1111 1000 1011 十六进制数为: F F 8 B N=-117D的补码是FF8BH (2)无符号数 8位表示数的无符号整数的范围为:0~255(256-1). 16位表示数的无符号整数的范围为:0~65535(65536-1). (3)符号扩展 当要扩展的数是无符号数时,只要在最高位前扩展(m-n)个0。 如果要扩展的数是有符号数,并且采用补码形式表示,进行符号扩展。(正数前面用0补齐;负数

汇编语言例子

实验三: 1)题目:在内存中从ARRAY开始的连续三个字节单元存放着30H,40H,50H。编制程序将这三个连续的数据传送到内存TABLE开始的单元。 DATA SEGMENT ARRAY DB 30H,40H,50H 定义数据段 TABLE DB 3 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,ARRAY LEA DI,TABLE MOV CX,3 REP MOVSB JMP $ CODE ENDS END START (2)题目:把内存2000H和3000H字单元的内容相加,结果存入4000H单元。(不考虑溢出) DATA SEGMENT ORG 2000H DW 1234H ORG 3000H DW 5678H ORG 4000H DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,[2000H] ADD AX,[3000H] MOV [4000H],AX JMP $ CODE ENDS END START 实验四 1、数据传送指令和算术运算指令完成NUM1和NUM2相加,结果放入SUM中。

DATA SEGMENT NUM1 DW 0012H,0030H,0FC21H ; 数1 NUM2 DW 3E81H,44E9H,6D70H ; 数2 SUM D W 3 DUP(?) ; 结果单元 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX,3 LEA SI,NUM1 LEA DI,NUM2 LEA AX,SUM HE: MOV BX,[SI] ADD BX,[DI] MOV [AX],BX INC SI INC DI INC AX LOOP HE MOV AH, 4CH ; 返回DOS INT 21H CODE ENDS END START 2、内存中自TABLE开始的七个单元连续存放着自然数0至6的立方值(称作立方表)。;任给一数X(0≤X≤6)在XX单元,查表求X的立方值,并把结果存入YY单元中。;提示用XLAT指令 DATA SEGMENT TABLE DB 0H,1H,2H,3H,4H,5H,6H XX DB 1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TABLE MOV AL,[XX] XLAT MOV DL,AL MOV AH,02H INT 21H JMP $

汇编语言程序例题

【例】试编写一程序计算以下表达式的值。 w=(v-(x*y+z-540))/x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。 DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP() DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX ;DATA→AX MOV AX,X IMUL Y ;(X)*(Y)→DX:AX MOV CX,AX

MOV BX,DX ;(DX:AX)→(BX:CX) MOV AX,Z CWD ;(Z)符号扩展 ADD CX,AX ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX) SUB CX,540 SBB BX,0 ;(BX:CX)-540→(BX:CX) MOV AX,V CWD ;(V)符号扩展 SUB AX,CX SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX) IDIV X ;(DX:AX)/X MOV W,AX ;商→W MOV W+2,DX ;余数DX→W+2 MOV AH,4CH INT 21H CODE ENDS ;退出DOS 状态 END START 【例】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT TAB DB 80,85,86,71,79,96 DB 83,56,32,66,78,84 NO DB 10 ENGLIST DB DATA ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE BEGIN:MOV AX,DATA MOV DS ,AX LEA BX,TAB MOV AL,NO DEL AL XLAT T AB MOV ENGLISH,AL MOV AH,4CH INT 21H CODE ENDS END BEGIN

《80x86汇编语言程序设计》教案及答案

《汇编语言程序设计》教案 附:习题参考答案 《IBM-PC汇编语言程序设计》 (第2版) 沈美明、温冬婵编著 教案编写时间:20XX年8月18日

前言 1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。 2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。 3.本教材共有十一章,其内容安排如下: (1).第一、二章为汇编语言所用的基础知识。 (2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。 (3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。 (4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。 (5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。 (6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。 (7).第九章说明BIOS和DOS系统功能调用的使用方法。 (8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计 方法和程序实例。 附:教学参考书 1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材) 2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年 3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月 4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年 5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,1991 6.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,1995 7.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,1990 8.杨素行,微型计算机系统原理及应用,清华大学出版社,1995 9.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,1996 10.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,1991 11.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,1993 12.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社 目录 第 1 章基础知识4 1.1进位计数制与不同基数的数之间的转换4 1.2二进制数和十六进制数的运算6 1.3计算机中数和字符的表示6 1.4几种基本的逻辑运算7 第 2 章80X86计算机组织7

汇编语言 廖建明编 课后习题第五章习题答案

5.1 顺序分支循环 5.2 (AX)=5400H (BL)=06H (DX)=2106H 5.3 D 5.4 C 5.5 B 5.6 D 5.7 C 5.8 0FFH 0 5.9 C 5.10 略 5.11 B 5.12 A 5.13 23H 01H 56H 04H 00H 5.14 将BUF里的小写字母转换成大写字母 5.15 略 5.16 (1)完成85274AH与938765H的加法功能 (2)不能。INC对CF无影响,而ADD有影响 (3)MOV SI,OFFSET DA TA1 (4)置CF为零。若CF初始为1,则在第一次执行ADC指令时会产生不正确的结果。5.17(编程题为参考答案,下同) DA TA SEGMENT DA TA1 DB ? DA TA2 DB ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA BEGIN:MOV AX,DA TA MOV DS,AX MOV DX,DA TA1;高位送DX MOV AX,DA TA2;低位送AX SHL AX,1; RCL DX,1; MOV AH,4CH INT 21H CODE ENDS END BEGIN 5.18 DA TA SEGMENT DA TAS DB ‘PLEAST INPUT:’,0DH,0AH, ‘$’ DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA BEGIN: MOV AX,DA TA MOV DS,AX

MOV AH,9H INT 21H ;输出“PLEASE INPUT:” MOV AH,1 INT 21H ;用户输入 MOV DL,AL SUB DL,20H MOV AH,2 INT 21H ;显示输出 MOV AH,4CH INT 21H CODE ENDS END BEGIN 5.19 DA TA SEGMENT ARRAY DB 20 DUP(?);原数列 PLUS DB 20 DUP(0);存放正数 NEGA DB 20 DUP(0);存放负数 PLUS_N DB 0;指示正数个数 NEGA_N DB 0;指示负数个数 TIME DB 20 DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA BEGIN: MOV AX,DA TA MOV DS,AX LEA SI,ARRAY LEA BX,PLUS LEA DI,NEGA MOV CX,TIME CLC;以上为初始化 LOOP1: MOV AL,[SI] CMP AL,0 INC SI JA DAYU JB XIAO LOOP LOOP1;等于零处理 JMP SHOW DAYU: MOV [BX],AL;大于零的处理 INC BX INC PLUS_N LOOP LOOP1 JMP SHOW XIAOYU:MOV [DI],AL;小于零的处理 INC DI

汇编语言第五章答案

5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答:程序段如下: BEGIN:MOV AH,1;从键盘输入一个字符的DOS调用 INT21H CMP AL,‘a’;输入字符<‘a’吗? JB STOP CMP AL,‘z’;输入字符>‘z’吗? JA STOP SUB AL,20H;转换为大写字母,用AND AL,11011111B也可 MOV DL,AL;显示一个字符的DOS调用 MOV AH,2 INT21H JMP BEGIN STOP:RET 5.2编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 答:程序段如下: BEGIN:MOV AH,1;从键盘输入一个字符的DOS调用 INT21H CMP AL,‘a’;输入字符<‘a’吗? JB STOP CMP AL,‘z’;输入字符>‘z’吗? JA STOP DEC AL;得到前导字符 MOV DL,AL;准备显示三个字符 MOV CX,3 DISPLAY:MOV AH,2;显示一个字符的DOS调用 INT21H INC DL LOOP DISPLAY STOP:RET 5.3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL 和DL中。 答:程序段如下: DSEG SEGMENT STORE DB4DUP(?) DSEG ENDS ┇ BEGIN:MOV CL,4;右移四次 MOV CH,4;循环四次 LEA BX,STORE A10:MOV DX,AX AND DX,0FH;取AX的低四位 MOV[BX],DL;低四位存入STORE中

汇编语言典型例题

典型例题(与考试题型,考试范围相近) 1.应用程序具有3个基本段,可执行指令应该保存于( A )。 A) 代码段B) 数据段C) 堆栈段D) 附加段 2. 8位补码F3H要扩展成16位补码应该是( D ),这样其真值才不变。 A) F0F3H B) 00F3H C) 10F3H D) FFF3H 3. “mov [ebx+8],eax”指令的目的操作数采用( C )寻址方式。 A) 存储器间接B) 寄存器C) 寄存器相对D) 立即数 4. 执行“sar ebx,1”指令后,ebx最高D31位一定等于( D ) A) 0 B) 1 C) D0位D) D30位 5. 在代码段内的-128~127个字节前后范围的跳转,可以用( C )类型名表示。 A) WORD B) DWORD C) SHORT D) FAR 6. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。 A) ReadConsole B) WriteConsole C) MessageBox D) GetStdHandle 7.汇编语言源程序经汇编后不能直接生成( C ) A) OBJ文件B) LST文件C) EXE文件D) CRF文件 8.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。 A) 两个主存储单元 B) 一个主存储单元和一个数据寄存器 C) 两个数据寄存器 D) 一个堆栈单元和一个数据寄存器 9.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。 A)0,0 B) 0,1 C) 1,0 D) 1,1 10.假定esp=00120100h,eax=1f6c2107h,执行指令push ax后,存放数据07h的物理地址是( C )。 A) 00120104h B) 00120101h C) 001200fch D) 001200ffh 11.下列对标志寄存器中标志位产生影响的指令是( B ) A) jmp done B) shl eax, 2 C) call subp D) not eax 12. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D ) A) F098H B) 0098H C) 1098H D) FF98H 13. “mov 80h[esi], eax”指令的目的操作数采用( C )寻址方式。

第五章 汇编语言程序设计

第五章汇编语言程序设计 一、程序分析题 1 .MOV AL,10 ADD AL,AL SHL AL,1 MOV BL,AL ADD AL,BL 问:AL= BL= 解: AL=50H(或80)BL=28H(或40) 2. MOV BX,00FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH 问:BX= 解:2. BX=0F00H 3. XOR AX,AX MOV BX,2 MOV CX,10 LP:ADD AX,BX ADD BX,2 LOOP LP HLT (1)该程序的功能是什么? (2)程序执行后,AX= BX= CX= 解:(1)求2~20间的偶数和。(完成累加求和,即求:2+4+6+8+10+12+14+16+18+20)。(2)AX=110,BX=22,CX=0 4.设DS=1000H,有如下数据段: DATA SEGMEN ORG 10011 Xl DW 11H,22H,33H X2 DB 33H,44H,55H Y1 EQU 4321H Y2 EQU $- X2 X3 DB 88H,99H DATA ENDS

(1)该数据段共占用多少字节的存储单元? (2) Y1和Y2的值为多少?X3的值是多少? 解:(1)该数据段共占用11个字节 (2)Yl =4321H,Y2=3,X3=109H这里X3是用DB定义的,它是变量名。它的偏移地址为109H。Y1和Y2是由EQU定义的,它们是符号名,是常量。 5.下列程序段执行后,寄存器AX、BX和CX的值各为多少? ORG 1200H DA1 DW 100 ┆ MOV AX,DA1 MOV BX,0FFSET DA1 MOV CL,BYTE PTR DA1+1 MOV CH,TYPE DA1 HLT 解: AX=0064H BX=1200H CX=6400H 6.有数据段如下: DATA SEGMENT ORG 1200H BUF DB 5,6,‘78’ X1 DW 1,37H,46H Y1 EQU X1-BUF DATA ENDS (1)该程序段占有的存储单元字节数是多少? (2)Y1的值是多少? 解:(1)占10个字节单元(2)Y1=2 二、程序填空题 1. AX中有一个无符号数,若其值小于100,就加100;若其值大于等于100,就减50,但计算结果仍保存在AX中。在下面程序段每一空白处填上一条适当指令,以实现其功能。 CMP AX,100 SUB AX,50 PP:ADD AX,100 DONE:HLT 解:第一空白处填JC PP 第二空白处填JMP DONE

汇编语言程序设计

《汇编语言程序设计》课程教学大纲 学时:32 学分:2 理论学时:24 实验学时:8 面向专业:电科、电信、通信课程代码:B2700009 先开课程:C语言程序设计课程性质:必修 执笔人:王艳春审定人:陈龙猛、张金政 第一部分:理论教学部分 一、说明 1、课程的性质、地位和任务 本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。 2、课程教学和教改基本要求 课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。学习这门课程,应达到以下几个要求: ①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧; ②具有阅读,分析汇编语言程序的能力; ③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行 过程及debug工具的调试手段。

相关文档
最新文档