汇编语言程序设计 3-1
汇编语言程序设计(第四版)第3章【课后答案】
汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社
直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。
钱晓捷新版汇编语言程序设计习题答案(1-4)
钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.17、举例说明CF和OF标志的差异。
溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确•例1:3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出•例2:AAH + 7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?(解答)代码段(Code Segment)用来存放程序的指令序列。
处理器利用CS : IP取得下一条要执行的指令•堆栈段(Stack Segment)确定堆栈所在的主存区域。
处理器利用SS : SP操作堆栈中的数据•数据段(Data Segment)存放当前运行程序所用的数据。
处理器利用DS : EA存取数据段中的数据•附加段(Extra Segment)是附加的数据段,也用于数据的保存。
处理器利用ES : EA存取数据段中的数据第二章8086指令系统2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200h ;AX=1200h(2) mov ax,bx ; AX=0100h(3) mov ax,[1200h] ; AX=4C2Ah(4) mov ax,[bx] ; AX=3412h(5) mov ax,[bx+1100h] ; AX=4C2Ah(6) mov ax,[bx+si] ; AX=7856h(7) mov ax,[bx][si+1100h] ; AX=65B7h2.2指出下列指令的错误(1) mov cx,dl 两操作数类型不匹配(2) mov ip,ax IP 指令指针禁止用户访问(3) mov es,1234h 立即数不允许传给段寄存器(4) mov es,ds 段寄存器之间不允许传送(5) mov al,300 两操作数类型不匹配(6) mov [sp],ax 目的操作数应为[ BP ](7) mov ax,bx+di 源操作数应为 [BX+DI](8) mov 20h,ah 立即数不能作目的操作数2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
3-1指令格式
8、 @ DPTR :表示以DPTR为数据指针的间接寻址,
用于对外部64K RAM/ROM寻址 9、(×) :表示 × 地址单元或寄存器中的内容 10、$:当前指令的地址。
• 作业
• • • • • • • • • • • 1、指令的一般格式是什么 2、操作码和操作数的功能是什么 3、汇编语言的定义是什么,由哪些部分组成 4、常用指令格式是什么 5、标号的定义是什么 6、注释的含义是什么 7、操作数与操作数之间用什么符号隔开 8、注释的前面需要加什么符号 9、标号与操作码之间用什么符号隔开 10、操作码与操作数之间用什么符号隔开 11、指令的分类有哪些
• 单周期指令 64条、双周期指令45条、四周期指令,乘除各
有1条 • 3、按其功能分类
• 数据传送 28条、算术运算 24条、逻辑运算和环移指令 25条
• 位操作指令 12条、控制转移指令 22条
指令的存放空间
• 指令是单片机执行某种操作的指令,用户若
要单片机完成一件事情,必须先编写指令,再
转成机器码形式,从键盘等设备输入程序存储
令时不予考虑。注释的前面需加分号“;”
ORG 1000H MOV R0,#0 ;清零,保存和的高位字节 MOV R1,#0 ;清零,保存和的低位字节 MOV R3,#16 ;R3用作计数器 L1:MOV P1,#0FFH ;置P1为输入口 MOV A,P1 ;读入采样值 ADD A,R1 ;累加 JNC L2 ;若无进位,转L2 INC R0 ;进位加到高位字节 L2:MOV R1,A DJNZ R3,L1 ;16次采样值是否累加完? MOV R4,#4 ;R4←右移次数4 L3:MOV A,R0 RRC A ;高位字节右移1位 MOV R0,A MOV A,R1 RRC A ;低位字节右移1位 MOV R1,A DJNZ R4,L3 ;循环4次完成除以16 HERE:SJMP HERE
计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础
例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3
《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寄存器的内容。
汇编语言(微机)第三章
汇编语言源程序的格式
一般情况下,定位类型、组合类型和类别说明可以 不用。 注意:SEGMENT和ENDS语句必须成对使用。 例:定义一数据段DATA
DATA SEGMENT A DB '1234' B DW 12H
DATA ENDS
22
汇编语言源程序的格式
(2)偏移地址定位语句 ORG 格式:ORG 数值表达式 功能:指定在它之后的程序段或数据块所存放的起始地 址的偏移量。
SUB1: ?
RESU: ?
?
31
汇编语言源程序的格式
④ 用DUP重复因子初始化一个数据区
格式:N DUP (表达式)
?、数值、
数值表达式
重复次数 重复装入的内容
字符等
例1: DA1 DB 2 DUP(0) DA2 DB 2 DUP(‘AB’) DA3 DW 2 DUP(1)
DA1
00
00
DA2
41
LOP: ADD AL,[BX] ADC AH,0 INC BX LOOP LOP MOV [DI] ,AX MOV AH ,4CH INT 21H
CODE ENDS END START
9
汇编语言源程序的格式
汇编语言源程序的格式
二、指令性语句 [标号:] 操作码 [操作数] [;注释项]
操作码:指明操作的性质,说明计算机要执行的具体操 作。用助记符表示。
第三章:8086汇编语言程序设计
主讲教师:范新民
整理ppt
1
8086汇编语言程序设计
1 3.2.1 汇编语言源程序的格式 2 3.2.2 常量、标识符和表达式 3 3.2.3 指示性语句 4 3.2.4 指令性语句 5 3.2.5 宏指令
最新实验三汇编语言程序设计3
实验三汇编语言程序
设计3
实验三汇编语言程序设计(3)
一、实验目的
进一步掌握汇编语言程序的编程方法和技巧
二、实验内容
1. 编写一个程序,进入保护模式,并在保护模式下用不同属性在屏幕上显示字符串(字符串内容自定),然后返回实模式。
2. 编写一个游戏程序,实现如下功能:
◆首先用蓝色清屏
◆在在屏幕中央显示由字符串“-============#”组成的黄色的小蛇,#为蛇
头,-为蛇尾
◆按下方向键可以控制上述小蛇按蛇行方式在屏幕上行走
◆在行进过程中,蛇头只能左转、右转或继续前进,不能掉转180度
提示:
①通过调用INT 16H的0号功能可以读取光标控制键的扩展码
光标控制键:↑↓←→
扩展码(十进制):72 80 75 77
②参考教材的P146-148了解在指定位置用指定属性显示字符的方法
3. (选做)修改期中试题中的浮点数计算程序,实现能够计算加、减、乘、除四则运算的计算器功能。
例如,用户输入2.3+1.1,则输出3.4;用户输入非法的表达式,则给出出错信息。
三、实验报告要求
前两个实验内容的程序说明和程序清单。
汇编语言程序设计_第3章 80x86指令系统
3.3.2 算术指令
1. 加法
一般形式:
ADD dest, src ; dest = dest + src
ADC dest, src ; dest = dest + src + CF
INC
dest
; dest = dest + 1
语法格式:
ADD reg/mem, reg/mem/imm
ADC reg/mem, reg/mem/imm
movsx ax, al ; 等价于cbw movsx eax, ax ; 等价于cwde movsx eax, al ; 等价于顺序执行cbw与cwde
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
(3)MOVZX 一般形式: MOVZX dest, src ; src零扩展为dest;386新增 语法格式: MOVZX reg16, reg8/mem8 MOVZX reg32, reg8/mem8/reg16/mem16
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
5. 堆栈操作指令
80x86系统的堆栈具有如下特点: 堆栈是在内存的堆栈段中,具有“先进后出”的特点。 堆栈只有一个出入口,即当前栈顶。当堆栈为空时,栈顶和栈底指向同一内存单
元。 堆栈有两个基本操作:PUSH(进栈)和POP(出栈)。PUSH操作使栈顶向低地
INC
reg/mem
对标志位的影响:
ADD、ADC:按一般规则影响CF、OF、SF和ZF。 INC:不影响CF,其它同ADD。 说明:ADD与ADC的2个操作数必须类型匹配,且不能同时是内存操作数。
2019/8/26
汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)
汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)第一章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章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
汇编语言程序设计第3章第一个程序3.5习题
( 5 )把在单元 l00H 到 12BH 的符号码进行反汇编;-U CS:100 12B ( 6 )把 24A63BH 输人数据段内起始于 18AH 的存储单元。-E DS:18A 2 4 A 63B
7 .说明以下每一种文件的用途:
( l ) . ASM 文件 汇编源程序 ;
( 2 ). LST 文件 列表文件
C . F4000H
D . 2F800H
15 .汇编语言中的变量有多种类型属性,错误的类型是( B )。
A .字节型 byte B .字符型 char C .字型 word D .双字型 dword
3.5.2 问答题 1.下列变量各占多少字节?
NUMBYTE DB 1 , 10 DUP ( ? ) , ' $ ' 答:11 个字节
D .编译程序
13 .既对可执行程序(文件名.EXE )进行运行,也可以对其进行调试的程序
是( B )。
A . MASM
B . DEBUG
C . EDIT
D .LINK
14 .用 DEBUG 调试程序时,显示某指令的地址是 2F80:F400,此时段寄存器
CS 的值是( B )。
A . F400H
B . 2F80H
DATAB DW 10 DUP ( 0 )
;DS=1050 ,TYPE=2, LENDTH=10
SIZE=20
DATAC DB 5 DUP ( 0 , 1 , 2 DUP ( 3,4 ) , 5 ); DS=1050 ,TYPE=1, LENDTH=5 SIZE=5
DATA ENDS
EDATA SEGMENT NUMA DB 1 , 2 DUP ( 10 , 20 ) ;ES=1080,TYPE=1,LENGTH=1,SIZE=1 NUMB DW 10 DUP ( ?) , 10 ;ES=1080,TYPE=2,LENGTH=10,SIZE=20 NUMC DB ‘THANK YOU !’ , , ODH , OAH , ' $ ' ;ES=1080,TYPE=1,LENGTH=5,SIZE=5 EDATA ENDS
汇编语言程序设计教程(第3版 卜艳萍)参考答案
汇编语言程序设计教程(第3版卜艳萍)参考答案汇编语言程序设计教程(第3版)习题参考答案第1章汇编语言基础知识思考与练习1. 计算机系统分哪几个层次?简述计算机系统的硬件结构。
1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层硬件系统是指构成计算机系统的物理实体或物理装置。
它由控制器、运算器、存储器、输入设备和输出设备等部件构成。
2. 简述用汇编语言进行程序设计的必要性。
1) 程序要具有较快的执行时间,或者只能占用较小的存储容量。
例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。
2) 程序与计算机硬件密切相关,程序要直接、有效地控制硬件。
例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。
3) 大型软件需要提高性能、优化处理的部分。
例如计算机系统频繁调用的子程序、动态连接库等。
4) 没有合适的高级语言或只能采用汇编语言的时候。
例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。
5) 汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。
3. 汉字编码主要分哪几类?每类的功能如何?汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。
1) 为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用西文标准键盘上的字母数字串表示汉字的编码。
目前,汉字输入编码方法主要有三种:数字编码、拼音编码和字形编码。
2) 汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。
无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。
3) 汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。
4) 字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。
第3章 MCS-51 的指令系统与汇编语言程序设计1
每条指令在执行时要花去一定的时间,以机器周期为单 位。按指令的执行时间来分: (1) 1个机器周期(12个时钟振荡周期)指令64条 (2) 2个机器周期(24个时钟振荡周期)指令45条 (3) 4个机器周期(48个时钟振荡周期)只有乘、 除两条指令的执行时间。 12MHz晶振:机器周期为1s。 按指令的功能分类,可分为5大类: 数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条)
第3章 MCS-51的指令系统与汇编语言程序设计
【学习目标】 掌握单片机的指令系统,熟悉指令功能、指令格 式以及指令的寻址方式; 理解汇编语言的特点以及与机器语言之间的区别 和联系; 掌握汇编语言程序设计的步骤、汇编语言程序的 结构; 熟练掌握汇编语言应用程序的开发
xuminxm11@ 密码:xuminxm1111
2.汇编语言 4) (4)DB(Define Byte)
汇编结果:(1000H) 汇编结果:(2000H) =25H =25H
页码 P68 P70 P73
章节或标题
(5)DW(Define Word) (4)分配内存单元
原错误
例如, ORG 1000H
更正为
例如, ORG 2000H
分配内存工作单元,确 定层序和数据的真实地 址
; 取高位 ; 两数高位相加 ; 存“和”的高位
【例3.11】 有一数据块存放起始地址为DATA1的片外RAM 区,数据块以“0”为结束标志,要求将其传送到DATA2为 起始地址的片内RAM区。编写程序如下: MOV DPTR, #DATA1 MOV R0,#DATA2 LOOP:MOVX A, @DPTR JZ ENDO MOV @R0,A INC DPTR INC R0 AJMP LOOP ENDO: SJMP $ ;设置片外RAM数据块地址指针 ;设置片内RAM数据块地址指针 ;取数 ;检测是否为0?为0,转ENDO ;不为0,传送 ;修改地址指针
汇编语言程序设计第三章习题答案
第三章答案:3.1(1)立即数寻址代码段(2)寄存器寻址数据段(3)寄存器间址数据段(4)寄存器间址数据段(5)直接寻址数据段(6)直接寻址数据段(7)基址寻址堆栈段(8)直接寻址代码段(9)寄存器寻址数据段(10)变址寻址数据段(11)基址变址寻址数据段(12)基址变址寻址堆栈段(13)基址变址寻址堆栈段(14)基址变址寻址堆栈段3.2(1)直接寻址30000H+0ABCH=30ABCH(2)寄存器寻址(3)直接寻址30000H+2000H=32000H(4)基址寻址30000H+0100H+2000H=32100H(5)寄存器间址30000H+0100H=30100H(6)寄存器间址30000H+00A0H=300A0H(7)寄存器间址20000+0010H=20010H(8)基址变址寻址20000H+0010H+2000H+00A0H=220B0H (9)基址寻址30000H+0100H-40H=300C0H(10)变址寻址30000H+0040H+00A0H=300E0H(11)基址变址寻址30000H+0100H+0100H-0040H=301C0H (12)基址变址寻址20000H+00A0H+0100H+0010H=201B0H (13)变址寻址30000H+2000H+0002H=32002H(14)基址变址寻址41000H+2000H+0100H+0002H=43102H 3.3第一种:MOV AX,[02C0H]第二种:MOV AX,[BP]第三种:MOV AX,0240H[BX]第四种:MOV AX,0100H[DI]第五种:MOV AX,0220H[SI](只要物理地址为095C0H即可)3.4(1)错,类型不匹配(2)错,类型二义性(3)对(4)错,立即数不能直接送入段寄存器(5)错,字节单元无法存放PUSH的值(6)对(7)对(8)错,不能把数据从段寄存器传入段寄存器(9)错,源操作数与目的操作数不能同时为存储器操作数(10)错,操作数类型二义性(11)错,XCHG指令的两个操作数都不能为立即数(12)错,类型不匹配(13)错,操作数类型二义性(14)错,RCL移位不为1时,必须用CL寄存器来操作(15)错,不能传送入段寄存器CS(16)错,目的操作数不能为立即数(17)错,格式不正确(18)错,变址寄存器不能使用寄存器BP(19)错,基址寄存器不能使用寄存器SI(20)错,目的操作数必须为通用寄存器3.5(1)(CL)=0F6H(2)(1E4F6)=5678H(3)(BX)=0056H (AX)=1E40H(4)(SI)=00F6H (DS)=1E40H (1E4F6H)=0024H (5)(CX)=00F6H (AX)=5678H (09226H)=1234H 3.6MOV是数据传送指令,LEA是取地址指令。
8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,
3-2 8051的寻址方式
3-2-1 立即寻址
立即寻址的操作数为常数,包含在指令字节中。即操作 数为存放在程序存储空间的常数,一般为双字节或3字节指令。 例如: D0 equ 30h mov a, #30h ;将常数48 (#30h) 送到累加器A mov r0, #D0 ;将常数48 (#30h) 送到r0 mov dptr, #1234h ;将#1234h送到dptr mov DPTR, #tab1 ;将tab1标号的地址送到 dptr寄存器中 …… tab1: db 10h,11h,55h,0f8h,0ach
3-3 数据传送类指令
数据传送操作是指把数据从源地址传送到目的地址, 源地址内容不变。共29条指令,使用8种助记符: 片内数据存储器传送指令MOV;
片外数据存储器传送指令MOVX;
程序存储器传送指令MOVC; 累加器交换指令 XCH、XCHD、SWAP; 堆栈操作指令 PUSH、 POP; 3-5
助记符格式
MOV Rn, A MOV Rn, direct
机器码
11111rrrB
相应操作
Rn ← A
指令说明
n=0~7, rrr=000~111
机器周期
1 1 1
10101rrr Rn←(direct) n=0~7, direct rrr=000~111 Rn←#data n=0~7, rrr=000~111
五)汇编语言的伪指令
4) DB nn1,nn2 … ;单字节项或项表 例如:tab1: DB 07h,10,’A’,0f5h 5)DW nnnn1,nnnn2 … ;双字节项或项表 例如:tab2: DW 07h,1230h 则在tab2起始程序存储器单元的内容为: 07h 00h 30h 12h 6)DS nn ; 预留程序存储区 例如:ORG 1200h DS 10 则在1200h地址开始,保留10个单元的存储区
钱晓捷汇编语言程序设计课后习题(作业新)
钱晓捷汇编语⾔程序设计课后习题(作业新)习题1 (1)习题2 (4)习题3 (10)习题4 (13)习题5 (15)习题6 (18)习题7 (21)习题8 (24)习题9 (27)1.1 简述计算机系统的硬件组成及各部分作⽤。
1.2 明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端⼝,KB,MB,GB和TB。
1.3 什么是汇编语⾔源程序、汇编程序、⽬标程序?1.4 汇编语⾔与⾼级语⾔相⽐有什么优缺点?1.5 将下列⼗六进制转化为⼆进制和⼗进制表⽰。
(1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6 将下列⼗进制数转换为BCD码表⽰。
(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)2458解答:⼗进制数 BCD码120001001024001001006801101000127000100100111128000*********255001001010101123400010010001101002458 00100100010110001.7 将下列BCD码转换为⼗进制数。
(1)10010001 (2)10001001 (3)00110110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)00000010解答:10010001 9110001001 8900110110 3610010000 9000001000 0810010111 9710000001 8100000010 021.8 将下列⼗进制数分别⽤⼋位⼆进制数的原码、反码和补码表⽰。
(1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128(8)681.9 完成下列⼆进制数的计算。
(1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000/1001(5)1011∧1001 (6)1011∨1001 (7)~1011 (8)1011⊕10011.10 数码0~9,⼤写字母A~Z,⼩写字母a~z,对应的ASCII码分别是多少?ASCII码为0dH,0aH对应的是什么字符?解答:⼤写字母A~Z,对应的ASCII码分别是41H~5AH⼩写字母a~z,对应的ASCII码分别是61H~7AHASCII码为0dH,0aH分别对应“回车”、“换⾏”1.11 计算机中有⼀个“01100001”编码,如果把它认为是⽆符号数,它是⼗进制什么数?如果你认为它是BCD码,则表⽰什么数?如果它是某个ASCII码,则代表哪个字符?1.12 简述Intel80x86系列微处理器在指令集⽅⾯的发展。
第三章MCS-51指令系统及汇编语言程序设计
指 令 系 统 的 寻 址 方 式
MCS-51指令系统及一般说明 MCS-51指令系统及一般说明
在介绍指令之前, 在介绍指令之前 , 先对指令中使用的一些符号意义进行简单 的说明。 的说明。 direct---直接地址, ---直接地址 ① direct---直接地址,即8位的内部数据存储器单元或特殊 功能寄存器的地址。 功能寄存器的地址。 #data--包含在指令中的8位常数。 --包含在指令中的 ② #data--包含在指令中的8位常数。 #datal6--包含在指令中的16位常数 包含在指令中的16位常数。 ③ #datal6--包含在指令中的16位常数。 rel-- 位的带符号的偏移量。用于SJMP --8 SJMP及所有的条件转移 ④ rel--8位的带符号的偏移量。用于SJMP及所有的条件转移 指令中。 指令中 。 偏移量按相对于下一条指令的第一个字节地址与跳转 后指令第一个字节地址之差计算, 范围内取值。 后指令第一个字节地址之差计算,在-128~+127范围内取值。 128 +127范围内取值 DPTR--数据指针,可用作16位的地址寄存器。 --数据指针 16位的地址寄存器 ⑤ DPTR--数据指针,可用作16位的地址寄存器。
指 令 系 统 的 寻 址 方 式
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器 寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器 。 RAM 或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的 地址。 地址。 其中(Ri)=40H (Ri)=40 例如 MOV A,@Ri ;(i=0或1),其中(Ri)=40H 这条指令表示从Ri中找到源操作数所在单元的地址, Ri中找到源操作数所在单元的地址 这条指令表示从Ri中找到源操作数所在单元的地址,把该地 址中的内容传送给A 即把内部RAM 40H单元的内容送到累加器A RAM中 址中的内容传送给A。即把内部RAM中40H单元的内容送到累加器A 中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BX, SI, DI (DS) BP (SS)
寄存器相对寻址方式(register relative)
指令中指定地址寄存器(SI、DI、BX、BP)
与一个位移量相加作为内存操作数的偏移地址
(BX)
偏移地址 =
(BP)
(SI) (DI)
8位
+ 16位
位移量
MOV AX, [SI+2] MOV [BP-6H], AL
函数调用:断点和局部变量,参数的 保存
PUSH指令
格式:PUSH Src PUSH reg16/seg/mem16/ reg32/mem32 PUSH im ; 286新增 功能:
16位:(SP)-2 SP,(Src) SS:SP 32位: (SP)-4 SP,(Src) SS:SP Im?
Notice!
必须是字或双字操作: PUSH AL (?) 对于PUSH im
若是 8位数,则零扩展为16位 若大于16位数,则零扩展为32位 若是负十进制数,则2n-|x| 使用PUSHW、 PUSHD 使用WORD PTR(字)或DWORD PTR(双字) 操作符 PUSH WORD PTR [1000H] 或PUSHW、 PUSHD PUSHW [1000H]
执行操作:将源操作数src复制到目的操作数dest,
src不变。
Notice!
目的操作数Dst不能为im,IP,CS 大小要匹配 MOV DL, AX Mem<——>Mem Mov [1000H], [2000H] 两个段寄存器之间不能直接传送数据;立即数/
内存数不能直接送入段寄存器中;只有通用寄 存器Seg。
MOV CS/IP, AX (X)
3.内存操作数寻址方式
直接寻址方式(direct addressing)
寄存器间接寻址方式(register indirect)
寄存器相对寻址方式(register relative)
基址变址寻址方式(based indexed..) 相对基址变址方式(relative based indexed..)
汇编语言程序设计 Assembly Language Programming 第三章 80x86指令系统
3.1 指令格式
指令的一般格式
【标号:】
操作码
操作数1
操作数2 【;注释】
操作码说明计算机要执行哪种操作,
它是指令中不可缺少的组成部分 操作数是指令执行的参与者,即各种 操作的对象,为数据及数据所在地址。
数据在传送过程中不发生任何变化 对标志寄存器的内容无任何影响 数据传送的Copy性质。
MOV/XCHG/LEA,LDS,LES/PUSH,POP, PUSHF ,POP
/XLAT/LAHF,SAHF,CBW,CWD
扩展汇编指令
MOV指令
格式:MOV Dst, Src
MOV
reg/mem/seg, reg/mem/seg/imm
比较2 MOV AX, 1000H AX=1000H; MOV AX, [1000H] AX=1234H
AX AH AL ……
34 12
1000H 1001H
……
寄存器间接寻址方式(register indirect)
指定某个地址寄存器(SI、DI、BX、BP)
的内容作为内存操作数的偏移地址 MOV AX, [BX] MOV [BP], AL 使用场合:表格、字符串、缓冲区处理 注意:
seg
— 段寄存器CS/DS/SS/ES/FS/GS
汇编指令学习时应注意的问题
寻址方式的多样性
对标志寄存器的影响
两个操作数大小匹配原则
隐式匹配:两者之中有一个确定即可,CPU
自动匹配
不确定操作数:im,Mem(变量确定!)
1. 数据传送指令
特点
MOV AX, 0034H
注意:
只能用于源操作数
;机器码:B83400
使用场合:常数,8位和16位。
2. 寄存器寻址方式(register addressing)
操作数在指定的数据寄存器中
MOV AX, BX
MOV AL, BH
注意:
无FS和GS CS/IP不能用作目的操作数:
5. Notice!
操作数中使用变量的地方可均使用
“变量名+(-)整数表达式”的形式。
MOV
AX,X+2 这里的“+”不是汇编指令
偏移地址只能是16位,超过16位,则忽略
若BX=0XFFFF,DI=1,则[BX+DI+2]=2
两个操作数不能同时为内存
例 子
MOV BX,2000H
LES指令
格式:LES Dst, Mem32
说明:Dst——16位地址寄存器 功能: Mem32的低字Dst, Mem32的高字ES
例如: LES SI, [1000H]
LES SI, ExtraDATA
LFS、LGS、LSS指令
格式:LFS(LGS/LSS) Dst, Mem32
MOV DS,ES MOV SS, 3456H MOV ES, [1000H] MOV AX, 1234H MOV DS,AX
XCHG
格式:XCHG OPRD1, OPRD2
XCHG
reg/mem, reg/mem
执行操作:(OPRD1) (OPRD2)
Notice!
不允许使用段寄存器、IP 不能同时为mem 类型要匹配
3.2.2 32CPU扩展寻址方式
立即数: 32位立即数。
寄存器操作数: 8个32位通用寄存器以及FS和GS
内存寻址
寄存器间接寻址和寄存器相对寻址 基址变址寻址和相对基址变址寻址方式 带比例因子的内存寻址
内存寻址
[base]
disp[base] [base][index] disp[base][index] [index*n]
说明: base、index为任一32位通用 寄存器(index不能取ESP)。 n为比例因子,取1、2、4或8。 若包含base且base为EBP或ESP, 则隐含段地址在SS;否则,隐含 段地址在DS。 若在16位CPU上编程,则不能 使用这些寻址方式。 Base和index的区分:有比例因 子的是变址;仅一个的是基址; 第一个是基址,除非ESP在第二 个。
MOV SI , 0002H MOV DI, 2002H MOV AL,[2002H] MOV AL,[DI]
2000H 2001H 2002H 01H 01H 01H BX SI DI
2000H 0002H 2002H
MOV AL,[BX+0002H]
MOV AL,[BX+SI]
MOV AL,[BX+DI-2000H]
3.1 指令格式
操作数的形式
立即操作数:指令的操作数是立即数(常
量),只能是源操作数。 寄存器操作数:操作数存放在寄存器中值, 指令中使用寄存器名。 内存操作数:操作数存放在内存中,指令中 给出内存地址,通常为有效地址EA,段地 址在某个段寄存器中。
3.2 寻址方式
寻址方式(addressing mode)——是指在指令中
5. Notice!
变量名编译后用偏移地址代替
MOV
AL, X
MOV AL,[0001H]
在寄存器相对寻址和相对基址寻址中,位移
量可以是常量或变量,若是变量,则为偏移 地址。
MOV
AL, X[BX]
MOV AL,[0001H+BX]
内存操作数可以有多种写法: [BX+DI+2] 2[BX+DI] 2[BX][DI]
dst src oprdn — 目的操作数 — 源操作数 — 第n个操作数,如oprd1, oprd2, oprd3 mem8 mem16 mem32 — 8位内存操作数 — 16位内存操作数 — 32位内存操作数
mem
mem64 imm8
— mem8/mem16/mem32
— 64位内存操作数 — 8位立即数
例:
XCHG BX, [BP+SI] XCHG AL, BH XCHG [1000H],AL XCHG [1000H] , [2000H] MOV AX , [2000H] XCHG [1000H] , AX MOV [2000H],AX
地址传送指令LEA
格式:LEA Dst, Src
功能:DstSrc的偏移地址
reg8 — 8 位 通 用 寄 存 器 AH/AL/BH/BL/ CH/CL/DH/DL reg16 — /SI/DI/BP/SP 16 位 通 用 寄 存 器 AX/BX/CX/DX
imm16
imm32 im
— 16位立即数
— 32位立即数 — imm8/imm16/imm32
reg32 —32 位 通 用 寄 存 器 EAX/EBX/ECX/EDX /ESI /EDI/EBP/ESP reg — reg8/reg16/reg32
直接寻址方式(direct addressing)
内存操作数的偏移地址由指令直接给出
MOV AX, [2000H]
MOV WORD PTR [1000H], -1
MOV AX, Y
注意:
隐含的段为数据段 物理地址
DS
= 16 * (DS) +偏移地址
比 较
比较1 MOV AL, [1000H] AL=34H; MOV AX, [1000H] AX=1234H