第五章汇编语言程序设计
- 格式:doc
- 大小:62.00 KB
- 文档页数:4
微型计算机原理王忠民课后答案大全语言程序设计 The following text is amended on 12 November 2020.第五章汇编语言程序设计1.画图说明下列语句所分配的存储空间及初始化情况。
(1)42H 59H 54H 45H 00H EEH 00H 07H 01H 02H 01H 02H 07H 00H 07H 01H 02H 01H02H 07H 00H 07H 01H 02H 01H 02H 07H(2)00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 07H 00H FBH FFH 59H 42H 45H 54H 02H 56H2.(PLENTH)=22H;它表示数据与的长度3.(L)=06H4.(1)MOV BX OFFSET LNAME(2)MOV SI WORD PTR CODE_LIST(3)MOV CODE_LENGTH EQU $-CODE_LIST5.(AX)=10(BL)=10(CL)=16.(1).(AX)=1(2).(AX)=2(3).(CX)=20(4).(DX)=40(5).(CX)=17.是说明下列指令中那些需要加上PR伪指令定义符。
(1).不需要(2)不需要(3)SUB [BX],WORD BYTE 2(或其他形式)(4).MOV CL,BYTE PTR WVAL 8.编一宏定义BXCHG,将一字节高4位和低4位交换。
BXCHG MARCO OPRMOV AL ,OPRMOV CL,04HROL AH,CLROR AL,CLOR AH , ALMOV OPR,AHENDM9.已知宏定义,展开宏调用:OPP BH,BL,CH,CL+MOV AX,BX+XCHG AL,CL+MOV AX,BL+XCHG AL,CH+MOV BL,AL10.将寄存器中的16位数分成四组,每组四位,分别存放在AL,BL,CL和DL中。
第5章分支、循环程序设计本章要点: 转移指令的寻址方式及其执行过程,控制转移类指令的使用,分支和循环程序的设计和应用。
程序调试的方法,常见问题的程序设计方法。
一、单项选择题5.1.1条件转移是根据标志寄存器中的标志位来判断的,条件判断的标志位共有( B )位。
A. 4B. 5C. 6D. 95.1.2用一条条件转移指令一次可以实现( A )个分支。
A. 2B. 3C. 4D. N5.1.3 条件转移指令的转移范围是(A)。
A. -128~127B. 0~255C. 0~65535D. -32768~327675.1.4 设A为字变量,B为标号,下列指令中不正确的是(D)。
A. MOV AX,AB. JNZ BC. JMP [SI]D. JMP B[BX]5.1.5 下述指令中影响CF标志位的是(A)。
A. SHL AL,1B. MOV AL,1C. JC LD. JNC L5.1.6 下述指令中不影响CF标志位的是(A)。
A. INC SIB. SUB SI,0C. NEG ALD. TEST AL,15.1.7 在多重循环程序设计中,每次通过外层循环进入内层循环时,其内层循环的初始条件(B)。
A. 不必考虑B. 必须重新设置C. 必须清0D. 必须置15.1.8 当设计一个程序时,最重要的是(B)。
A. 程序的结构化B. 能使程序正常运行并实现功能C. 程序的执行速度快D. 程序占用的存储空间小*5.1.9 如果“JNC L”指令的操作码放在0040H,转移后在0020H处取下一指令的操作码,那么这条指令的位移量是(C)。
A. 1EHB. 20HC. 0DEHD. 0E0H*5.1.10 如果“JGE P”指令的操作码放在0050H,该指令的位移量是34H,执行完这条指令转移取下一条指令的偏移地址是(C)。
A. 82HB. 84HC. 86HD. 88H二、填空题5.2.1 当下面循环程序中的划线处填上一个什么数字时,执行的循环次数最多?MOV CX,____0______MOV AX,0L:INC AXLOOP L5.2.2 当两个数进行比较后,执行__JE L(JZ L)表示两数相等则转移到L。
目标程序
第五章汇编语言程序设计
● 汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。
● 使用汇编语言编写的程序称作汇编语言源程序。
汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。
● 把汇编语言源程序翻译成目标程序的软件称为汇编程序。
汇编过程的含义如图:
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 )
表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。
(2)偏移属性(OFFSET)
表示变量的偏移地址,即在逻辑段中距段的起始点的字节数。
(3)类型属性(TYPE)
表示变量占用存储单元的字节数。
用DB定义的变量类型属性为字节;用DW定义的变量类型属性为字(2字节);用DD定义的变量类型属性为双字(4字节)
三、标号
标号表示一条指令所在的地址,所以标号也是指令语句的地址符号,常用作转移指令(包含子程序调用指令)的操作数,即目标地址。
标号通常由字母数字串组成,但第一个字母必须为字母。
标号有三种属性:
(1)段属性(SEGMENT)
表示标号所在段的段基址。
(2)偏移属性(OFFSET)
表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。
(3)距离属性(或类型属性TYPE)
表示标号作为段内或段间的转移属性。
距离属性分为两种:
A、NEAR(近)
表示本标号只能被标号所在段内的转移和调用指令访问(即段内转移)
B、FAR(远)
表示本标号可以被其他段(不是标号所在段)的转移和调用指令访问(即段间转移)2、表达式与运算符
8086宏汇编语言允许使用的表达式有两种类型:
数值表达式只产生数值结果
它所产生的结果是一个存储器地址,如果这个地址存放的是
数据,一般称它为变量,如果存放的是指令,一般称它为标地址表达式
号。
运算符主要包括以下6种类型:
(1)算术运算符
包括加(+)、减(-)、乘(*)、除(/)、求余数(MOD)、左移(SHL)和右移(SHR)注:除了加和减法运算符可以使用变量和符号外,其他运算符只适用于常数的数值运算。
[例5-1] CONT = 15*4 ; CONT =60
CONT = CONT /8 ; CONT =7
CONT = CONT MOD 3 ; CONT =1
MOV AL, 21H SHL 2 ; AL = 84H
(2)逻辑运算符
包括按位操作的与(AND)、或(OR)、异或(XOR)、和非(NOT)四种运算符。
它们只适用于对常数进行逻辑运算。
注:AND、OR、XOR和NOT也是指令助记符。
[例5-2] AND DX, PORT AND OFEH
其中第二个AND是逻辑运算符,在程序汇编时,计算PORT AND OFEH 产生一个立即数作为指令操作数。
而第一个AND是指令助记符,在汇编以后执行AND指令,
DX的内容与上述立即数相“与”,结果放在DX中。
(3)关系运算符
包括EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或大于)、GE(大于或等于)共六种。
[例5-3] MOV BX, PORT LT5
若PORT的值小于5,则汇编程序把上条指令汇编为:MOV BX,OFFFFH; 否则被汇编为:MOV BX,0。
[例5-4] MOV BX, ((PORT LT 5) AND 20) OR ((PORT GE 5) AND 30)
此例中当PORT 的值小于5时,执行MOV BX,20 否则执行MOV BX,30。
(4)分析操作符(数值返回运算符)
A、取地址的偏移量
格式:OFFSET 变量名或标号
功能:取变量名或标号所在段的段内偏移量。
B、取段基址
格式:SEG 变量名或标号
功能:取变量名或标号所在段的段地址。
C、求变量名或标号的类型值
格式:TYPE 变量名或标号
功能:返回一个数字值。
若TYPE运算符加在变量名前,返回的数值是该变量的类型属性;若TYPE运算符加在标号前,返回的数值则是该变量距离属性;返回的数值与性的关系表4-1。
D、求长度
格式:LENGTH 变量名
功能:返回一个变量名所占的存储单元(字节、字或双字)的数目。
如果变量使用重复定义子句说明的,则返回DUP前面的数值;若没有DUP明,则返
回值总是1。
(例5-5,P121)
E、求大小
格式:SIZE 变量名
功能:返回变量名所占存储单元的字节数,它等于LENGTH和TYPE两个运算符返回值的乘积。
[例5-6]上例中SIZE BUF1 = 100
SIZE BUF2 = 200
SIZE BUF3 =0
(5)综合运算符
A、PTR 运算符
格式:类型PTR 表达式
功能:用于指出变量、标号或地址表达式的类型属性,新的类型只在当前指令内有效。
[例5-7] MOV BYTE PTR [DI],4 ; 指明目的操作数为字节类型
JMP DWORD PTR [BP] ; 指明目的操作数为双字节类型;(即指明转
移操作为段间转移
B、THIS 运算符
格式:THIS 类型
功能:把它后面指定的类型或距离属性赋给当前的变量、标号或地址表达式。
注:THIS运算符使下面的“原标号或原变量”另有新的名字和类型,但并不分配新的存储单元。
[例5-8] A EQU THIS BYTE
B DW 20 DUP(?)
A、B对应同一存储器地址,对变量A为字节访问,对变量B为字节访问,且
A和B具有相同的段基址和偏移量。
(6)其他运算符
A、HIGH 和LOW 运算符
格式:HIGH 表达式
LOW 表达式
功能:从运算对象中分理处高字节或低字节。
[例5-9] K1 EQU 1234H
MOV AL,LOW K1 ;AL ←34H
MOV BL,HIGH K1 ;BL ←12H
B、SHORT 运算符
格式:SHORT 标号
功能:当转移的目标地址与本转移指令的下一条指令之间的字节距离在–128~ 127 范围时,可以用SHORT运算符进行说明。
[例5-10] L1:JMP SHORT L2
┇
L2:MOV AX,BX
┇
表5-2 运算符的优先级别(P122)。