logo
  • write-homewrite-home-active首页
  • icon-chaticon-chat-activeAI 智能助手
  • icon-pluginicon-plugin-active浏览器插件
  • icon-subjecticon-subject-active学科题目
  • icon-uploadicon-upload-active上传题库
  • icon-appicon-app-active手机APP
首页
/
计算机
题目

习题与解答我们在学习8086汇编语言[1]程序格式[2]时要注意以下几点:1):掌握汇编语言程序的编程格式和语句的四个组成部分。特别是构成操作数[3]部分的两种操作符:分析操作符和合成操作符的作用和使用方法。2):常用的符号定义伪指令[4]、数据定义伪指令、段定义伪指令和过程定义伪指令的功能、格式和使用方法。3):宏指令[5]语句的定义,调用方[6]法以及对应的宏扩展。下面我们分别学习这几点:一:汇编语言程序的格式汇编语言的源程序[7]是由各条语句构成的。每条语句可以由四项构成,格式如下:[name] operation operand [;comment]其中名字项是一个符号。操作项是一个操作码[8]的助记符,它可以是指令、伪操作或宏指令名。操作数项是由一个或多个表达式组成,它提供为执行所要求的操作而需要的信息。注释项用来说明程序或语句的功能。;为识别注释项的开始。上面四项中带方括号的两项可有可无。各项之间必须用“空格”(SPACE)或“横表”(TAB)符隔开。名字项(标号[9])关于名字或标号项我们要注意以下几点:1):标号在代码段中定义,后面跟冒号。在除代码段以外的其他段中定义时后面不跟冒号。2):标号和一条指令的地址相联系,可作为JMP和CALL指令的操作地址。一般伪指令中的名字一般不作转移指令的操作数,但在间接寻址[10]时可以作转移指令的操作数。名字可用来表示变量名、段名、过程名、符号名等。3):标号或名字可任选或省略。4):标号和变量均有三种属性:段值属性(SEGMENT)、段内的地址偏移量属性(OFFSET)和类型属性(TYPE).操作项它可以是指令、伪操作或宏指令名。1):指令就是前面我们所学近100条8086指令2):伪指令或宏指令我们在后面再作详细的介绍。操作数也就是程序要加工处理的对象。它可分为三类:常数、操作数和表达式。1):常数:IBM-PC汇编语言允许有二进制[11]、八进制[12]、十进制[13]、十六进制[14]常数,分别用后缀B、O、D、H表示,还允许使用字符串常数,须用单引号括起来。2):操作数:可以是常数操作数、寄存器[15]操作数和存储器[16]操作数。3):表达式:在汇编语言中,表达式可以是常数、寄存器、标号、变量以及运算符组成的算式。4):注释项:注释部分在语句后由“;”号作间隔,用来对语句的功能后某一程序段[17]加以说明,使程序易读下面我们学习一些汇编语言常用的运算符:算术运算符算术运算符有+、-、*、/和MOD。其中MOD是取余。算术运算符可用于数字表达式或地址表达式中。注意:当用于地址表达式中时,只有当其结果有明确的物理意义时其结果才有效。逻辑运算符逻辑运算符有AND、OR、XOR和NOT。逻辑操作[18]是按位操作的,它只能用于数字表达式中。关系运算符关系运算符有EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)六种.注意:关系操作符的两个操作数必须都是数字或是同一段内的两个存储器地址,计算结果应为逻辑值:结果为真时,表示为0FFFFH,结果为假时,则表示为0。例:MOV BX,((PORT_VAL LT 5)AND 20)OR((PORT_VAL GE 5)AND 30)当POTE_VAL<5时,汇编结果应该是:MOV BX,20当POTE_VAL>5时,汇编结果应该是:MOV BX,30数值回送操作符它有TYPE、LENGTH、SIZE、OFFSET、ORG5种。这些操作符把一些特征或存储器地址的部分作为数值回送。下面我们分别学习以下它们。TYPE格式为:TYPE Variable或label如果是变量,则汇编语言将回送该变量以字节数表示的类型:DB为1,DW为2,DD为4,DQ为8,DT为10。如果是标号,则汇编程序[19]将回送代表该标号类型的数值:NEAR为-1,FAR为-2。LENGTH格式为:LENGTH Variable对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数,对于其他情况回送1。例: ABC DW 100 DUP(0)对于指令: MOV CX,LENGTH ABC汇编程序将使其形成为:MOV CX,100SIZE格式为:SIZE Variable汇编程序应回送分配给该变量的字节数。注意:此值是LENGTH值和TYPE 值的乘积。OFFSET格式为:OFFSET Variable或label汇编程序将回送变量或标号的偏移地址值。SEG格式为:SEG Variable或label汇编程序将回送变量或标号的段地址。二:常用的伪指令8086/8088宏汇编程序提供了许多伪指令来辅助用户编程。伪指令是说明性的指令,“伪”体现在汇编时不产生机器指令[20]。下面我们学习一些常用的伪指令的格式和功能。符号定义伪指令1)等值伪指令-----EQU格式为:<符号名> EQU <表达式>功能是:给符号定义一个值,或定义为别的符号名,甚至是一条可执行的命令或表达式的值等。例: CONST EQU 298LAB EQU 10*3PH EUQ PUSH注意:EQU伪指令不能重新定义,即在同一源程序中,用EQU伪指令定义的符号,不能在重新赋予不同的值。2)等号伪指令------=格式为:<符号名>=<表达式>功能:同EQU伪指令,但不同之处是可以对符号名进行重新定义。例:SET=5...SET=SET+1注意:SET=5和SET EQU 5不允许在同一程序中同时定义使用。数据定义伪指令格式为:<变量名>DB<表达式><变量名>DW<表达式><变量名>DD<表达式><变量名>DQ<表达式><变量名>DT<表达式>功能为:数据定义伪指令可以把其后定义的数据存入指定的存储单元[21],或者只分配存储器空间而并不存入确定的数据。DB、DW、DD、DQ、DT伪指令分别用来定义字节、字、双字、四字和五字,被说明的每个操作符分别占有一个字节、两个字节、四个字节、八个字节和十个字节。关于此伪指令我们还要注意以下几点:1):所定义的操作数可以是常数或表达式;2):所定义的操作数可以是字符串;3):所定义的操作数可以是?,表示保留存储空间,但不存入数据;4):所定义的操作数可以用复制操作符来复制的某些操作数.例:DATA DB 10,20STR DB ‘ABC’DEF DW ?,288ARRAR DB 30 DUP(?)ARRA DW 20 DUP(0)段定义伪指令存储器的物理地址是由段地址和偏移地址结合而成的。段定义伪指令使我们按段来组织程序和分配存储器。段定义的伪指令有SEGMENT、ENDS、ASSUME、ORG、PAGE、PUBLIC等。1):SEGMENT和ENDS功能为:把汇编语言源程序分成个逻辑段,并指出逻辑段的起始和终止地址。格式为:<段名> SEGMENT [定位类型] [组合类型] ['类别']...<段名> ENDS其中:1)段名可由用户自己命名.2)定位类型、组合类型和类别是赋给段名的属性3)"[]"号中的项可以省略."定位类型"的省缺值为PARA,表示该段必须从小段边界开始,即段地址的最低两个十六进制位必须为0。"组合类型"的省缺值为NONE,表示本段与其他逻辑上下不发生关系,每段都有自己的基地址。2):ASSUME功能:为汇编程序提供了程序的段结构,并指明相应的逻辑段应通过对应的寄存器寻址[22]。格式:ASSUME <段寄存器名>:<逻辑段名>[,…]过程定义伪指令功能:过程定义伪指令又称子程序[23]定义伪指令,用以在程序中定义一个子程序,以便提供主程序的调用。格式:<过程名> PROC [NEAR]/FAR...RET<过程名> ENDS程序结束伪指令功能:用来标志整个源程序的结束格式:END <起始符号地址[24]>三:宏指令的定义和调用宏指令语句是一种源程序级嵌式的程序语句。将程序中多次重复使用的源程序段,预先定义成所使用的宏指令语句,通常成为宏定义。在程序中可以用已定义的宏指令来代替着个程序段执行,称为宏调用。宏定义中可以定义使用参数,并且宏定义可嵌套。调用时,汇编程序先对宏指令语句进行宏扩展,即将宏定义中的程序段嵌入到宏指令语句处。宏指令定义的好处:可以简化设计并且优化结构。宏指令定义的形式格式:<宏指令名> MACRO [Par1,Par2,…]语句1;语句2;……语句n;ENDM说明:1)宏指令名是宏定义的名字,作为宏指令语句的操作符,其功能就是MACRO与ENDM之间语句的功能.2)Par1,Par2是定义的形式参数[25],指令的操作码和操作数均为形式参数,在进行宏调用时,宏指令语句中的实在参数将对形式参数作一一对应的替换.形式参数并不是必须的。3)MACRO称为宏定义伪指令,ENDM称为宏定义结束伪指令,它们之间的语句即程序段称为宏体.宏指令的调用形式宏调用实际上就是调用执行已定义过的宏指令语句,其形式为:<宏指令名>[R1,R2,…]说明:1)宏指令名必须和宏定义中的宏指令名一致,最多可由1-8个字母数字组成.2)R1,R2,…为实在参数,调用时其类型和顺序必须和宏定义中的形蚕一一对应。例:定义一个缓冲区,它包含有33H,34H,35H,和36H,四个字符,把这4个数据依次复制20次,存入接着的存储区,最后显示出复制结果。

习题与解答我们在学习8086汇编语言[1]程序格式[2]时要注意以下几点:1):掌握汇编语言程序的编程格式和语句的四个组成部分。特别是构成操作数[3]部分的两种操作符:分析操作符和合成操作符的作用和使用方法。2):常用的符号定义伪指令[4]、数据定义伪指令、段定义伪指令和过程定义伪指令的功能、格式和使用方法。3):宏指令[5]语句的定义,调用方[6]法以及对应的宏扩展。下面我们分别学习这几点:一:汇编语言程序的格式汇编语言的源程序[7]是由各条语句构成的。每条语句可以由四项构成,格式如下:[name] operation operand [;comment]其中名字项是一个符号。操作项是一个操作码[8]的助记符,它可以是指令、伪操作或宏指令名。操作数项是由一个或多个表达式组成,它提供为执行所要求的操作而需要的信息。注释项用来说明程序或语句的功能。;为识别注释项的开始。上面四项中带方括号的两项可有可无。各项之间必须用“空格”(SPACE)或“横表”(TAB)符隔开。名字项(标号[9])关于名字或标号项我们要注意以下几点:1):标号在代码段中定义,后面跟冒号。在除代码段以外的其他段中定义时后面不跟冒号。2):标号和一条指令的地址相联系,可作为JMP和CALL指令的操作地址。一般伪指令中的名字一般不作转移指令的操作数,但在间接寻址[10]时可以作转移指令的操作数。名字可用来表示变量名、段名、过程名、符号名等。3):标号或名字可任选或省略。4):标号和变量均有三种属性:段值属性(SEGMENT)、段内的地址偏移量属性(OFFSET)和类型属性(TYPE).操作项它可以是指令、伪操作或宏指令名。1):指令就是前面我们所学近100条8086指令2):伪指令或宏指令我们在后面再作详细的介绍。操作数也就是程序要加工处理的对象。它可分为三类:常数、操作数和表达式。1):常数:IBM-PC汇编语言允许有二进制[11]、八进制[12]、十进制[13]、十六进制[14]常数,分别用后缀B、O、D、H表示,还允许使用字符串常数,须用单引号括起来。2):操作数:可以是常数操作数、寄存器[15]操作数和存储器[16]操作数。3):表达式:在汇编语言中,表达式可以是常数、寄存器、标号、变量以及运算符组成的算式。4):注释项:注释部分在语句后由“;”号作间隔,用来对语句的功能后某一程序段[17]加以说明,使程序易读下面我们学习一些汇编语言常用的运算符:算术运算符算术运算符有+、-、*、/和MOD。其中MOD是取余。算术运算符可用于数字表达式或地址表达式中。注意:当用于地址表达式中时,只有当其结果有明确的物理意义时其结果才有效。逻辑运算符逻辑运算符有AND、OR、XOR和NOT。逻辑操作[18]是按位操作的,它只能用于数字表达式中。关系运算符关系运算符有EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)六种.注意:关系操作符的两个操作数必须都是数字或是同一段内的两个存储器地址,计算结果应为逻辑值:结果为真时,表示为0FFFFH,结果为假时,则表示为0。例:MOV BX,((PORT_VAL LT 5)AND 20)OR((PORT_VAL GE 5)AND 30)当POTE_VAL<5时,汇编结果应该是:MOV BX,20当POTE_VAL>5时,汇编结果应该是:MOV BX,30数值回送操作符它有TYPE、LENGTH、SIZE、OFFSET、ORG5种。这些操作符把一些特征或存储器地址的部分作为数值回送。下面我们分别学习以下它们。TYPE格式为:TYPE Variable或label如果是变量,则汇编语言将回送该变量以字节数表示的类型:DB为1,DW为2,DD为4,DQ为8,DT为10。如果是标号,则汇编程序[19]将回送代表该标号类型的数值:NEAR为-1,FAR为-2。LENGTH格式为:LENGTH Variable对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数,对于其他情况回送1。例: ABC DW 100 DUP(0)对于指令: MOV CX,LENGTH ABC汇编程序将使其形成为:MOV CX,100SIZE格式为:SIZE Variable汇编程序应回送分配给该变量的字节数。注意:此值是LENGTH值和TYPE 值的乘积。OFFSET格式为:OFFSET Variable或label汇编程序将回送变量或标号的偏移地址值。SEG格式为:SEG Variable或label汇编程序将回送变量或标号的段地址。二:常用的伪指令8086/8088宏汇编程序提供了许多伪指令来辅助用户编程。伪指令是说明性的指令,“伪”体现在汇编时不产生机器指令[20]。下面我们学习一些常用的伪指令的格式和功能。符号定义伪指令1)等值伪指令-----EQU格式为:<符号名> EQU <表达式>功能是:给符号定义一个值,或定义为别的符号名,甚至是一条可执行的命令或表达式的值等。例: CONST EQU 298LAB EQU 10*3PH EUQ PUSH注意:EQU伪指令不能重新定义,即在同一源程序中,用EQU伪指令定义的符号,不能在重新赋予不同的值。2)等号伪指令------=格式为:<符号名>=<表达式>功能:同EQU伪指令,但不同之处是可以对符号名进行重新定义。例:SET=5...SET=SET+1注意:SET=5和SET EQU 5不允许在同一程序中同时定义使用。数据定义伪指令格式为:<变量名>DB<表达式><变量名>DW<表达式><变量名>DD<表达式><变量名>DQ<表达式><变量名>DT<表达式>功能为:数据定义伪指令可以把其后定义的数据存入指定的存储单元[21],或者只分配存储器空间而并不存入确定的数据。DB、DW、DD、DQ、DT伪指令分别用来定义字节、字、双字、四字和五字,被说明的每个操作符分别占有一个字节、两个字节、四个字节、八个字节和十个字节。关于此伪指令我们还要注意以下几点:1):所定义的操作数可以是常数或表达式;2):所定义的操作数可以是字符串;3):所定义的操作数可以是?,表示保留存储空间,但不存入数据;4):所定义的操作数可以用复制操作符来复制的某些操作数.例:DATA DB 10,20STR DB ‘ABC’DEF DW ?,288ARRAR DB 30 DUP(?)ARRA DW 20 DUP(0)段定义伪指令存储器的物理地址是由段地址和偏移地址结合而成的。段定义伪指令使我们按段来组织程序和分配存储器。段定义的伪指令有SEGMENT、ENDS、ASSUME、ORG、PAGE、PUBLIC等。1):SEGMENT和ENDS功能为:把汇编语言源程序分成个逻辑段,并指出逻辑段的起始和终止地址。格式为:<段名> SEGMENT [定位类型] [组合类型] ['类别']...<段名> ENDS其中:1)段名可由用户自己命名.2)定位类型、组合类型和类别是赋给段名的属性3)"[]"号中的项可以省略."定位类型"的省缺值为PARA,表示该段必须从小段边界开始,即段地址的最低两个十六进制位必须为0。"组合类型"的省缺值为NONE,表示本段与其他逻辑上下不发生关系,每段都有自己的基地址。2):ASSUME功能:为汇编程序提供了程序的段结构,并指明相应的逻辑段应通过对应的寄存器寻址[22]。格式:ASSUME <段寄存器名>:<逻辑段名>[,…]过程定义伪指令功能:过程定义伪指令又称子程序[23]定义伪指令,用以在程序中定义一个子程序,以便提供主程序的调用。格式:<过程名> PROC [NEAR]/FAR...RET<过程名> ENDS程序结束伪指令功能:用来标志整个源程序的结束格式:END <起始符号地址[24]>三:宏指令的定义和调用宏指令语句是一种源程序级嵌式的程序语句。将程序中多次重复使用的源程序段,预先定义成所使用的宏指令语句,通常成为宏定义。在程序中可以用已定义的宏指令来代替着个程序段执行,称为宏调用。宏定义中可以定义使用参数,并且宏定义可嵌套。调用时,汇编程序先对宏指令语句进行宏扩展,即将宏定义中的程序段嵌入到宏指令语句处。宏指令定义的好处:可以简化设计并且优化结构。宏指令定义的形式格式:<宏指令名> MACRO [Par1,Par2,…]语句1;语句2;……语句n;ENDM说明:1)宏指令名是宏定义的名字,作为宏指令语句的操作符,其功能就是MACRO与ENDM之间语句的功能.2)Par1,Par2是定义的形式参数[25],指令的操作码和操作数均为形式参数,在进行宏调用时,宏指令语句中的实在参数将对形式参数作一一对应的替换.形式参数并不是必须的。3)MACRO称为宏定义伪指令,ENDM称为宏定义结束伪指令,它们之间的语句即程序段称为宏体.宏指令的调用形式宏调用实际上就是调用执行已定义过的宏指令语句,其形式为:<宏指令名>[R1,R2,…]说明:1)宏指令名必须和宏定义中的宏指令名一致,最多可由1-8个字母数字组成.2)R1,R2,…为实在参数,调用时其类型和顺序必须和宏定义中的形蚕一一对应。例:定义一个缓冲区,它包含有33H,34H,35H,和36H,四个字符,把这4个数据依次复制20次,存入接着的存储区,最后显示出复制结果。

题目解答

答案

.model small

.stack

.data

source db 33h,34h,35h,36h

target db 80 dup(?)

.code

.startup

mov ax,ds

mov es,ax

cld

mov si,offset source

mov di,offset target

mov cx,80

rep movsb

mov si,0

mov bx,offset target

again:mov dl,[bx+si]

mov ah,2

int 21h

inc si

cmp si,80

jb again

.exti 0

end

第四章——汇编语言程序设计

相关问题

  • 程序=算法+()A. 数据结构B. 程序结构C. 控制结构[1]D. 体系结构

  • AdaBoosting采用多个单一分类器组成一个强分类器()A. 错误B. 正确

  • 下列不属于量子机器学习算法的是()A. 量子支持向量机B. 量子主成分分析C. 薛定谔方程求解D. 深度量子学习

  • 2、网络安全工作的目标包括:()。A. 信息机密性B. 信息完整性C. 服务可用性D. 以上都是

  • 8、信息安全“三个不发生”不包括( )。单选题Box 确保不发生大面积信息系统故障停运事故Box 确保不发生恶性信息泄密事故Box 确保不发生信息外网网站被恶意篡改事故Box 确保不发生信息内网非法外联事故

  • 9、不在网络安全的基本属性范围内的()。A. 机密性B. 可用性C. 完整性D. 多样性

  • 下列哪项关于监督学习算法的描述正确()A. 强化学习的训练效果一定优于监督学习B. 主要的监督学习方法包括生成方法和判别方法C. 广度优先搜索算法是一种监督学习算法

  • 7、 加强电脑安全防护,及时升级病 毒库,安装防火墙,及时查杀病毒和木马,是防范 电信网络诈骗的有效做法。A. 正确B. 错误

  • 以下哪种方法属于卷积神经网络的基本组件()。A. 卷积层B. 池化层C. 激活函数D. 复制层

  • 4/5 以下属于人工智能实际应用的是()。A. 机器视觉B. 人脸识别C. 计算机辅助自动规划D. 智能工业机器人E. 刷卡门禁

  • 下列哪项属于因果推理模型()A. 因果图B. 神经符号推理C. 符号推理模型D. 结构因果模型

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • 3.判断题K-means聚类算法对数据的尺寸敏感。()A. 对B. 错

  • 下列哪项贪婪最佳优先搜索算法的描述正确()A. 贪婪最佳优先搜索不属于启发式搜索算法B. 贪婪最佳优先搜索是一种A*搜索算法C. 贪婪最佳优先搜索是一种广度优先搜索算法D. 贪婪最佳优先搜索属于有信息搜索算法

  • 下列哪个方法属于知识图谱推理方法()A. 路径排序算法B. 深度学习推断C. 广度优先搜索D. 归纳逻辑程序设计

  • 1、网上银行系统的一次转账操作过程中发生了转账金额被非法篡改的行为,这破坏了信息安全的()属性。A. 完整性B. 保密性C. 不可否认性D. 可用性

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • Windows中“复制”操作的快捷键是Ctrl+V。

  • 由脸书(Facebook)公司开发的深度学习编程框架是()A. TensorFlowB. PaddlePaddleC. PyTorchD. Mindspore

  • 下列哪项不是求解对抗搜索问题的基本算法( ) A.反向传播算法 B.广度优先排序算法 C.Alpha-Beta剪枝算法D.最小最大搜索算法

上一页下一页
logo
广州极目未来文化科技有限公司
注册地址:广州市黄埔区揽月路8号135、136、137、138房
关于
  • 隐私政策
  • 服务协议
  • 权限详情
学科
  • 医学
  • 政治学
  • 管理
  • 计算机
  • 教育
  • 数学
联系我们
  • 客服电话: 010-82893100
  • 公司邮箱: daxuesoutijiang@163.com
  • qt

©2023 广州极目未来文化科技有限公司 粤ICP备2023029972号    粤公网安备44011202002296号