汇编语言第6章答案

合集下载

第06章-单片机串行通信系统-习题解答

第06章-单片机串行通信系统-习题解答

第6章单片机串行通信系统习题解答一、填空题1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。

2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fosc/32或fosc/64 。

3.SCON中的REN=1表示允许接收。

4.PCON 中的SMOD=1表示波特率翻倍。

5.SCON中的TI=1表示串行口发送中断请求。

6.MCS-51单片机串行通信时,先发送低位,后发送高位。

7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。

8.设T1工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K时,T1的初值为 FAH 。

9.MCS-51单片机串行通信时,通常用指令 MOV SBUF,A 启动串行发送。

10.MCS-51单片机串行方式0通信时,数据从 P3.0 引脚发送/接收。

二、简答题1.串行口设有几个控制寄存器?它们的作用是什么?答:串行口设有2个控制寄存器,串行控制寄存器SCON和电源控制寄存器PCON。

其中PCON 中只有PCON.7的SMOD与串行口的波特率有关。

在SCON中各位的作用见下表:2.MCS-51单片机串行口有几种工作方式?各自的特点是什么?答:有4种工作方式。

各自的特点为:3.MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值? 答:串行口各种工作方式的波特率设置:工作方式O :波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12。

工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率 工作方式2:波特率有两种固定值。

当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64计算定时器的初值计算:4.若fosc = 6MHz ,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少?并进行初始化编程。

第六章 汇编语言程序设计

第六章 汇编语言程序设计

AA:
SUB MOV MOV HLT
BX,AX DI, 2800H [DI],BX
16
改: CLC CMP JC SUB MOV MOV HLT AA: SUB MOV MOV HLT BX,AX DI, 2800H [DI],BX
17
AX,BX AA AX,BX DI, 2800H [DI],AX
CMP JZ CMP JZ MOV JMP NEXT: DONE: MOV HLT AL, 'y ' ;比较AL与小写字母y NEXT ;相等,转移到NEXT AL, 'Y ' ;不是小写字母y,是大写字母Y ? NEXT AH,-1 ;相等,转移NEXT ;不是大Y ,令AH=-1 Y AH 1
DONE ;无条件转移DONE AH,0 ;是Y或Y,令AH=0
AL,BL , AL,0 , STOR AL,80H , MINUS AL, 1 , STOR AL,0FFH , BH,AL ,
;取X ;X=0,Y=X , ;X<0 < ;X>0,Y=+1 > , X<0,Y= -1 < , ;保存Y 保存
MINUS: : STOR: :
MOV MOV HLT
例4,判断是否为字母 .若AL中是字母Y(含大小写),则令AH ,判断是否为字母Y. =0,否则令AH=-1
为奇数, ;否则AX为奇数,加1 否则 为奇数 ;AX←AX÷2 ÷
12
法2:将最低位用移位指令移至进位标志,判断进位标志 :将最低位用移位指令移至进位标志, 就是偶数; 是0,AX就是偶数;否则,为奇数 , 就是偶数 否则,
MOV SHR JNC ADD E1: SHR

《汇编语言程序设计》(第四版)教案及答案解析

《汇编语言程序设计》(第四版)教案及答案解析

《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第4版)钱晓捷主编前言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.180X86微处理器 (4)2.2基于微处理器的计算机系统构成 (4)2.3中央处理机 (5)2.4存储器 (6)2.5外部设备 (7)第 3 章 80X86的指令系统和寻址方式 (8)3.180X86的寻址方式 (8)3.2程序占有的空间和执行时间 (10)3.380X86的指令系统 (10)第 4 章汇编语言程序格式 (27)4.1汇编程序功能 (27)4.2伪操作 (27)4.3汇编语言程序格式 (31)4.4汇编语言程序的上机过程 (34)第 5 章循环与分支程序设计 (37)5.1循环程序设计 (37)5.2分支程序设计 (38)5.3如何在实模式下发挥80386及其后继机型的优势 (38)第 6 章子程序结构 (40)6.1子程序的设计方法 (40)6.2子程序的嵌套 (41)6.3子程序举例 (41)第 7 章高级汇编语言技术 (43)7.1宏汇编 (43)7.2重复汇编 (44)7.3条件汇编 (45)第 8 章输入/输出程序设计 (46)8.1I/O设备的数据传送方式 (46)8.2程序直接控制I/O方式 (47)8.3中断传送方式 (47)第 9 章 BIOS和DOS中断 (50)9.1键盘I/O (50)9.2显示器I/O (52)9.3打印机I/O (53)9.4串行通信口I/O (54)第 10 章图形与发声系统的程序设计 (55)10.1显示方式 (55)10.2视频显示存储器 (55)10.3EGA/VGA图形程序设计 (56)10.4通用发声程序 (57)10.5乐曲程序 (58)第 11 章磁盘文件存取技术 (59)11.1磁盘的记录方式 (59)11.2文件代号式磁盘存取 (60)11.3字符设备的文件代号式I/O (61)11.4BIOS磁盘存取功能 (62)附录:《IBM—PC汇编语言程序设计》习题参考答案 (63)第一章.习题 (63)第二章.习题 (64)第三章.习题 (65)第四章.习题 (79)第五章.习题 (84)第六章.习题 (104)第七章.习题 (118)第八章.习题 (125)第九章.习题 (130)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

《汇编语言》各章习题答案

《汇编语言》各章习题答案

汇编语言各章习题答案习题一答案: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位数。

第6章程序设计语言习题与答案

第6章程序设计语言习题与答案

第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。

自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。

用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。

这些使用助记符语言的语言后来就被称之为汇编语言。

(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。

高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。

高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。

(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。

(P138)3、列举程序设计语言的几种范型。

程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。

(P138-140)4、简述语言虚拟机。

提示:语言虚拟机是某种语言的解释器。

语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。

这样使得硬件系统能够支持这种语言编写的程序的有效执行。

目前最流行的语言虚拟机是Java虚拟机。

(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。

编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。

编译方式是一次编译,然后执行程序可以反复多次执行。

解释是另一种将高级语言转换为可执行程序的方式。

《汇编语言》作业答案

《汇编语言》作业答案

3545233.doc 制作:江家宝《IBM—PC汇编语言程序设计》课后作业参考答案目录第一章:基础知识 ........................................................................................ 2第二章:80×86计算机组织......................................................................... 2第三章:80×86的指令系统和寻址方式..................................................... 3第四章:汇编语言程序格式........................................................................ 7第五章:循环与分支程序设计.................................................................... 9第六章:子程序结构 ................................................................................ 12第七章:高级汇编语言技术.................................................................... 20第八章:输入输出程序设计.................................................................... 22第九章:BIOS和DOS中断 (23)3545233.doc 制作:江家宝第一章:基础知识1.1、用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(3) 4095 答:(3) 4095 =1111 1111 1111B=FFFH1.2、将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 答:(1) 10 1101B=2DH=451.3、将下列十六进制数转换为二进制数和十进制数:(4) 1234 答:(4) 1234H=1 0010 0011 0100B=46601.4、完成下列十六进制数的运算,并转换为十进制数进行校核:(3) ABCD-FE 答:(3) ABCD-FEH=AACFH=437271.5、下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

汇编语言(王爽)第六章检测点与实验5

汇编语言(王爽)第六章检测点与实验5

汇编语⾔(王爽)第六章检测点与实验5检测点6.1(1)依次⽤内存0:0~15单元中的内容改写程序中的数据,补全程序:assume cs:codesgcode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx]mov cs:[bx],ax ;确定⽬标区域段地址和偏移地址add bx,2loop smov ax,4c00hint 21hcodesg endsend start(2)程序实现依次⽤0:0~15单元的内容改写程序中数据,数据传送⽤栈来进⾏。

栈空间设置在程序内,补全程序:assume cs:codesgcode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0,0,0,0,0,0;10个字空间作为栈start:mov ax,cs ;设置栈的段地址mov ss,axmov sp,1ah ;cs:0~cs:f为原始数据空间,cs:10~cs:19为栈空间,初始为空,栈顶指向下⼀单元mov ax,0mov ds,axmov bx,0mov cx,8s:push [bx] ;先把0:0处的字单元内容⼊栈pop cs:[bx] ;再把栈顶内容出栈放⼊程序数据段中add bx,2loop smov ax,4c00hint 21hcodesg endsend start实验5 编写、调试具有多个段的程序<程序加载后,ds:0~ff为PSP区域,(ds+10H):0为整个程序的⼊⼝,如程序依序设置有data\stack\code3个数据段区域,其中设data和stack段各⾃为16个字节,那么程序加载后(还未运⾏前):(ds+10h)则为data的⼊⼝段地址;(ds+10h+1)为stack的⼊⼝段地址;(ds+10h+2)为code的⼊⼝段地址;>1、编译连接下⾯程序,⽤debug加载、跟踪,回答问题。

汇编语言第六章

汇编语言第六章

三.中断向量表
3. 设置或取出中断向量指令 (1) 设置中断向量指令 功能:把由AL指定的中断类型的中断向量DS:DX放入中
断向量表中。
(AH)= 25H
(AL)= 中断类型号
DS:DX = 中断向量 INT 21H
三.中断向量表
(2) 取出中断向量指令
功能:把AL中指定的中断类型的中断向量从中断
一、 WIN32编程基础
(2) 循环控制伪指令
格式:.WHILE 条件表达式 循环体 .ENDW 格式:.REPEAT 循环体 .UNTIL 条件表达式 格式:.CONTINUE 功能:终止本次循环, 开始下一次循环 格式:.BREAK 功能:退出当前循环
功能:实现循环结构
一、 WIN32编程基础
内中断的处理特点: ①中断类型号一般在指令中; ② 不受中断允许标志位IF的影响。
二、 中断源
2. 外中断 由外设控制器、协处理器等CPU以外的事件引起的中断, 称为外中断。 外中断的处理特点: ① 中断类型号由8259A提供,或由自制电路来提供;
② 受中断允许标志位IF的影响(IF=1,响应中断)。
个字节。
三.中断向量表
如:INT 4AH
中断向量地址 = 4AH*4 = 128H
DEBUG执行后, 用D命令查看: ―D0:0↙ … 执行INT 4AH时: IP=1805H CS=F000H IP F000: 1805 中断处理
0:128H
0:129H
05 18
0:12AH
0:12BH
00
F0 …
外设
二、 外设与主机传送的接口与信息
接口的组成:设备状态寄存器、设备控制寄存 器、数据寄存器。 I/O端口的地址空间:允许设置64K个8位端口 或32K个16位端口。 如:40H~43H时钟/定时器,60H~63H为 8255通讯芯片的接口。

大学汇编语言基础试题4

大学汇编语言基础试题4

汇编语言基础试题4第六章数据传送指令一、程序分析题(阅读程序段后给出其运行结果)设(SP)=80H,(BX)=0FFH;(AX)=1PUSH BXADD BX,AXXOR BX,AXPUSH BXPOP CX上述程序段运行后,(SP)=7EH,(CX)=0101H二、单项选择题(1.堆栈指针SP的内容是(B)A.栈顶单元内容B.栈顶单元地址C.栈底单元内容D.栈底单元地址2.VAR是数据段中定义的变量,指令MOV AX,VAR 源操作数的寻址方式是(B)A.立即寻址B.直接寻址C.相对寻址D.寄存器寻址3.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H,指令MOV AX,DS:[BP]源操作数的物理地址是(B)。

A.25040HB.30040HC.25100HD.55040H4.下列传送指令中,有语法错误的指令是(A)。

A.MOV CS,AXB.MOV DS,AXC.MOV ES,AXD.MOV SS,AX5.与MOV BX,OFFSET VAR指令完全等效的指令是(D)。

A.MOV BX,VARB.LDS BX,VARC.LES BX,VARD.LEA BX,VAR6.MOV SP,3210HPUSH AX执行上述指令序理后,SP寄存器的值是(B)。

A.3211HB.320EHC.320FHD.3212H7.执行指令PUCH CX后堆栈指针SP自动(C)A.+1B.不操作C.-2D.-1三、简答题已知数据段定义如下:DATA SEGMENTVA DB 10HVB DW 3*20MSG DB ‘HELLO!’COUNT EQU 15BUF DW COUNT DUP(5,3 DUP(1,2),0)DATA ENDS问题:(1)执行MOV BX,0FFSET VA后,(BX)=(2)执行MOV CX,TYPE BUF后,(CX)=(3)用一条指令将字母‘O’取到AL中.(4)经汇编后,BUF占有的存储空间是字节答:(1)0(2)2(3)MOV AL, MSG+4(4)240四、执行下列指令语句,把执行结果填在空格中已知(SS)=3000H(SP)=200H(AX)=785AH (BX)=1234H,先执行PUSH AX,再执行PUSH BX,此时(SS)= ()(SP)= ()数12H存放的物理地址是()答:(SS)= (3000H)(SP)= (1FCH)数12H存放的物理地址是(1FDH)第七章算术运算程序一、单项选择题1.十进制数运算调整指令AAS可以紧跟在(A)之后:A.SBBB.DECC.CMPD.NEG2.除法调整指令AAD是对(C)调整:A.AX中组合的十进制被除数B.AL中组合的十进制的商数C.AX中未组合的十进制被除数D.AL中未组合的十进制的商数3.在多字节加减运算时,特别要注意标志(B)对运算的影响:A.AFB.CFC.SFD.OF4.设(DS)=8260H(DI)=3500H,指令DEC WORD PTR[DI]操作数的物理地址是(B)A.11760HB.85B00HC.86100HD.以上都不时5.指令ADD ES:[DI],AX和存放在(B)A.寄存器B.附加段C.堆栈段D.代码段6.设VAR是数据段中定义的字节变量,指令MUL VAR乘积存放在(A)A.AXB.BXC.CXD.DX7.设(DH)=20H,执行NEG DH指令后,正确的结果是(C)A.(DH)=20HCF=1B.(DH)=20HCF=0C.(DH)=0E0HCF=0D.(DH)=0E0HCF=18.设DS=8225H,DI=3942H,指令NEG BYTE PTR [DI]操作数的物理地址是(A)A.85B92HB.86192HC.BB690HD.12169H9.执行INC指令除对于SF.ZF有影响外,还要影响的标志位是(A)A.OF,AF,PFB.OF,AF,CFC.OF,PF,CFD.AF,PF,CF10.设DH=10H,执行NEG DH指令后,正确的结果是(D)A.DH=10HCF=1B.DH=10HCF=0C.DH=10HCF=0D.DH=0F0H11.执行除法指令后,影响的标志位是(D)A.CF,OFB.SF,ZFC.CF,OF,SFD.AF,CF,OF,PF,SF,ZF都不确定12.执行下面指令序列后,结果是(A)MOV AL,82HCBWA.AX=0FF82HB.AX=8082HC.AX=0082HD.AX=0F82H二、判断题(正确的画√,错误的画×)1.指令AAA必须紧跟在加法指令之后使用。

汇编语言程序设计(第二版)课后习题答案-精品资料

汇编语言程序设计(第二版)课后习题答案-精品资料

汇编语言程序设计(第二版)课后习题答案第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH30021H字单元内容:AB34H30022H字单元内容:CDABH4.解答:这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答:CS+IP第一个字的物理地址为:0AAA40H6.解答:条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH,AL等(2)循环计数CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7)将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。

(1)ADD DX,BX(2)ADDAL,[BX][SI](3)ADD[BX][0B2H],CX(4)MOV AX,2A59H ADD[0524H],AX(5)ADDAL,0B5H3.(1)寄存器间接寻址MOVBX,OFFSET[BLOCK][0AH]MOV DX,[BX](2)寄存器相对寻址MOV SI,OAHMOVDX,[BLOCK][SI](3)基址变址寻址MOVBX,BLOCKMOVSI,OAHMOVDX,[BX][SI]4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。

第6章 汇编语言程序设计

第6章   汇编语言程序设计

格式:重复次数 DUP(表达式)
将括号( )内的表达式重复预置, 重复的次数由DUP前面的常数决定。
图4.2中这种表达式的格式为
DATA9 DATA10 DB DW 3 DUP (00) 2 DUP(?)
5) (符号)地址表达式(指变量或地址标号) 当变量为DW和DD类型时,才可以作为地址表达式, 此时应遵循以下规则: (1) 当用DW定义地址表达式时,地址表达式中的变 量名称表示该变量的第一个存储单元的偏移地址。 (2) 当用DD定义地址表达式时,低位字用于预置偏移 地址,高位字用于预置段地址。 (3) 地址表达式中的变量或标号可与常数值相加减。 对于变量来说,运算结果的类型不变;对标号来说,运算 结果仍表示原标号所在段中的地址。 (4) 变量或标号不能与变量或标号相加,但可相减, 结果是没有属性的纯数值。
汇编语言不能直接被机器识别和执行,必须先经具有 “翻译”功能的系统程序——汇编程序(assembler)的帮助, 才能将汇编语言转换成相应的机器语言(称为目标代码程序),
如图6.1所示。
注意:汇编语言源程序与汇编程序是不同的。
图6.1 汇编语言如何变为机器语言
3.高级语言 机器语言和汇编语言使用很不方便,它与人类的自然语 言和一般数学语言相距甚远,属于低级语言。 与此相比,高级语言更接近人类自然语言,编制程序直 观、简练、易掌握、通用性强。它无论是面向问题或面向过 程,一般总是独立于具体机器的,程序员可不必了解机器的 指令系统和内部的具体结构,而把主要精力集中在掌握语言 的语法规则和算法的程序实现上。高级语言常用于科学计算、 离线仿真、商用、管理等。 高级语言程序必须借助于更强有 力的翻译系统——编译程序(compiler)才能将高级语言源程序 翻译成能被计算机直接执行的目标程序。 高级语言的种类很多,目前使用较广泛的高级语言有 BASIC、Visual Basic、Visual C、C++、JAVA、Delphi、 ASP、Matlab、Labview等。

汇编语言 第版 王爽 完整答案

汇编语言 第版 王爽 完整答案

第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。

16/32位微机原理、汇编语言及接口技术(钱晓捷)[第2版]课后答案

16/32位微机原理、汇编语言及接口技术(钱晓捷)[第2版]课后答案

第一章1.1 解:五代,详细见书1.2 解:微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统。

PC机:PC(Personal Computer)机就是面向个人单独使用的一类微机。

单片机:用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等。

数字信号处理器DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用1.3 解:微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:CPU:统一协调和控制系统中的各个部件系统总线:传送信息存储器:存放程序和数据I/O设备:实现微机的输入输出功能I/O接口:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源1.4 解:系统总线:传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换。

好处:组态灵活、扩展方便三组信号线:数据总线、地址总线和控制总线。

其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。

1.5解:(1)用于数值计算、数据处理及信息管理方向。

采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段。

(2)用于过程控制及嵌人应用方向。

采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。

1.6 解:1.7 解:I/O通道:位于CPU和设备控制器之间,其目的是承担一些原来由CPU处理的I/O任务,从而把CPU从繁杂的I/O任务中解脱出来。

汇编语言程序设计(第四版)第1~5章【课后答案】

汇编语言程序设计(第四版)第1~5章【课后答案】

第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。

〔解答〕CPU:包括运算器、控制器和寄存器组。

运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。

存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。

外部设备:实现人机交换和机间的通信。

〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。

〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。

辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU 需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。

RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。

存储器由大量存储单元组成。

为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。

KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。

〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。

〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

汇编语言课后习题及答案_按章节_超全面[1]

汇编语言课后习题及答案_按章节_超全面[1]

`00第一章课外练习题一、单项选择题:1.从键盘输入的字符,在计算机内存储的是它的(A)(A)二进制编码(B)四进制编码(C)八进制编码(D)十六进制编码2.6位无符号二进制数能表示的最大十进制数是(B)。

(A)64 (B)63 (C)32 (D)31 3.十进制数269变换为十六进制数是(C)。

(A)10B (B)10C (C)10D (D)10E 4.8位的微型计算机系统是以16位来表示地址,则该微机系统有(C)个地址空间。

(A)255 (B)65535 (C)65536 (D)1048576 5.8位有符号二进制数能表示的最大十进制数是(D)。

(A)256 (B)255 (C)128 (D)127 6.十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。

(A)无符号十进制数136 (B)带符号十进制数-120(C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示7.有一个数值152,它与十六进制数6A相等,那么该数值是(B)。

(A)二进制数(B)八进制数(C)十进制数(D)四进制数8.7位ASCII总共可表示(C)个符号。

(A)256 (B)127 (C)128 (D)255 9.4B的字长是(C)。

(A)8位(B)16位(C)32位(D)64位二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.字节通常用英文单词“Bit”来表示(×)。

2.目前广泛使用的Pentium计算机其字长为5个字节(×)。

3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节(√)。

4.微型计算机的字长并不一定是字节的整数倍(×)。

三、填空题1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F)/(00~~FF)。

2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a)字符。

汇编语言第3版王爽检测点答案及详细解析

汇编语言第3版王爽检测点答案及详细解析

汇编语⾔第3版王爽检测点答案及详细解析汇编语⾔第3版王爽检测点答案及详细解析转⾃:https:///qq_42777804/article/details/90512159第⼀章基础知识检测点1.1(1)1个CPU的寻址能⼒为8KB,那么它的地址总线的宽度为 13位。

(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。

(3)1KB的存储器可以存储 8192(2^13)个bit, 1024个Byte。

(4)1GB是 1073741824 (2^30)个Byte、1MB是 1048576(2^20)个Byte、1KB是 1024(2^10)个Byte。

(5)8080、8088、80296、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)在存储器中,数据和程序以⼆进制形式存放。

解题过程:(1)1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)存储器的容量是以字节为最⼩单位来计算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)⼀个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。

这样的CPU最多可以寻找2的N次⽅个内存单元。

(⼀个内存单元=1Byte)。

第6章由机器语言到高级语言:程序编写与编译练习题答案解析

第6章由机器语言到高级语言:程序编写与编译练习题答案解析

第6章由机器语言到高级语言:程序编写与编译1、关于计算机语言,下列说法不正确的是_____。

(A)所有源程序最后都需被转换为汇编语言程序,机器才能够执行;(B)所谓“高级语言”和“低级语言”是指其和机器硬件的相关程度,不涉及机器硬件的语言为高级语言,而与机器硬件相关的语言则为低级语言;(C)低级语言程序执行效率高是因为用低级语言编程时可以充分利用硬件的各种特殊性,而高级语言则只能使用硬件的标准结构;(D)高级语言编程效率高是因为其可用大粒度积木块来构造程序,比一行行语句、一条条指令来编程效率高出很多。

(E)上述有不正确的。

答案:A解释:本题考核对“计算机语言”的理解。

(A)所有源程序最后都需被转换为机器语言程序,机器才能够执行,所以(A)错误;(B)(C)和(D)的叙述都是正确的。

具体内容请参考第六章视频之“从机器语言到汇编语言”以及第六章课件。

2、关于计算机语言,下列说法不正确的是_____。

(A)汇编语言和机器语言是以指令为单位来编写程序;(B)高级语言是以语句为单位来编写程序,一条语句相当于若干条指令(或者说一条语句可用若干条指令来实现);(C)面向对象语言或可视化构造语言是以对象(类)为单位来编写程序,一个对象相当于若干条语句((或者说一个对象可用若干条语句来实现);(D)我们可以设计一种新语言,让用户以其更熟悉的对象(类)来编写源程序,然后提供一个编译器将该源程序转换成某种已广泛使用的高级语言源程序,就可以让机器执行该程序。

(E)上述有不正确的。

答案:E解释:本题考核对“计算机语言”的理解。

(A)(B)(C)和(D)的叙述都是正确的,所以选择(E)。

具体内容请参考第六章视频之“从机器语言到汇编语言”以及第六章课件。

3、关于计算机语言的编译,下列说法不正确的是_____。

(A)需要“分词”,将其中的常量、变量名和保留字识别出来,并分类及编号;(B)需要识别每一条语句所对应的“模式”。

任意语句的常量和变量名被归为“标识符”类别,而标识符与保留字的不同组合关系构成了语句的模式;计算机语言是由有限的语句模式构成的;(C)对每一种模式,都有相应的组合构造方法,即模式可被认为是由原子模式或说基本模式通过组合的方法构造出来的,对原子模式或者基本模式可以事先写好其相应的目标语言的指令或语句;(D)按照模式由原子模式的组合次序,可将模式语句转换成目标语言的指令或语句;进一步按照分类及编号将常量、变量名代入形成最终的目标语言程序,完成编译;(E)上述有不正确的。

汇编语言(王爽)学习记录_第六章

汇编语言(王爽)学习记录_第六章

汇编语⾔(王爽)学习记录_第六章第六章包含多个段的程序6.1 在代码段中使⽤数据考虑计算以下8个数据的和结果存⼊ax中。

0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h思考如果⼀个⼀个相加会很⿇烦,考虑⽤循环:CODES SEGMENTASSUME CS:CODESdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hmov bx,0mov ax,0mov cx,8s: add ax,cs:[bx]add bx,2loop sMOV AH,4CHINT 21HCODES ENDSENDdw(define word)⽤于定义字型数据,定义在此代码段的开始地址。

怎么让cs:ip指向mov bx ,0呢?观察debug中cs:ip指向。

⽤伪指令start表⽰cpu从这⾥开始执⾏代码观察cs:ip指向CODES SEGMENTASSUME CS:CODESdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hSTART:mov bx,0mov ax,0mov cx,8s: add ax,cs:[bx]add bx,2loop sMOV AH,4CHINT 21HCODES ENDSEND START6.2 在代码段中使⽤栈程序:assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0start: mov ax,cs mov ss,ax mov sp,30h mov cx,8 s: push cs:[bx] add bx,2 loop s mov bx,0 mov cx,8 s1: pop cs:[bx] add bx,2 loop s1 mov ax,4c00h int 21hcodesg endsend startsp指向30h(48)是因为前16字节是指定的8个数据(0~15地址),后32个字节是16个字型数据的栈(16~47地址)ss:sp指向栈顶48地址检测点6.1(1): 添加代码:mov cs:[bx],ax(2): cs、24h(0~15是给定的数据,16~35是栈段,栈指针在36也就是24h)、pop cs:[bx]6.3 将数据、代码、栈放⼊不同的段如果⼀个程序需要处理的数据很多上⾯的程序就不合适(⼀个段只能⼩于64kb)需要把数据,代码,栈分开例如程序6.4:DATAS SEGMENTdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hDATAS ENDSSTACKS SEGMENTdw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0STACKS ENDSCODES SEGMENTSTART:MOV AX,STACKSMOV ss,AXMOV SP,20HMOV AX, DATASMOV DS,AXMOV BX,0MOV CX,8S: PUSH [BX]ADD BX,2LOOP SMOV BX,0MOV CX,8S1: POP [BX]ADD BX,2LOOP S1MOV AH,4CHINT 21HCODES ENDSEND START实验5 编写、调试具有多个段的程序(1)在调试的时候肝了⼀会⼉,发现程序⽤debug打开后必须执⾏到 mov ds ,ax才能查看到数据段的数据;1.2.执⾏前:执⾏后:3.data段地址:X-2 stack段地址:X-1(2)1.2.cs=0770h ss=076fh ds=076eh3.data段地址:x-2 stack段地址:x-1(3)1.2.cs=076eh ss=0772h ds=0771h3.data段地址:x-2 stack段地址:x-1(4)只有3能正确执⾏,1和2不指明程序⼊⼝的话会把前⾯定义的数据段栈段当作指令执⾏,逻辑上是错误的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CMP %ESI,%EAX JO overflow
(5)若ESI≤EAX,转到less_eq执行;
CMP %EAX,%ESI JLE less_eq
(6)若EDI≤EDX,转到below_eq执行。
CMP %EDX,%EDI JBE below_eq
11.
Pentium Pro处理器为IA-32指令系统增加了一条实用的条件传送指令CMOVxx,其中的条件xx与条件转移指令Jxx的条件xx相同。请用一条CMOV指令代替如下程序片断中的条件转移指令和其后的传送指令(含标号):
cmp $0,%ecx
je address

习题1.指令指针EIP是通用寄存器还是专用寄存器?有指令能够直接给它赋值吗?哪些指令的执行会改变它的值?
解答:EIP是专用寄存器,不能通过指令直接给它赋值。可以改变其值的指令有:
(1)无条件分支,包括:跳转(jmp)、调用(call)、中断(int)。
(2)条件分支,与标志位CF、OF、PF、SF、ZF相关的条件跳转指令。
习题8.执行如下程序片断后,CMP指令分别使得5个状态标志CF、ZF、SF、OF和PF为0还是为1?它会使得哪些条件转移指令条件成立、发生转移?
movl $0x20, %eax
movl $0x80, %ebx
cmpl %ebx,%eax
解答:CF=1 ZF=0 SF=1 OF=0 PF=1
可以使得发生转移的指令有:JC JS JP JNZ JNO
习题13.
请问如下LOOP指令执行了多少次?
movl $0, %ecx
repeat:loop repeat
解答:
loop执行时,先将ecx中的值减1,使之变为-1(0xFFFFFFFF),然后进行判断是否为0。这里32位整数的最大值为232,故loop执行了232次。
14.
请用两条指令实现JECXZ指令的功能。
(1)若EDX > EDI,转到above执行;
CMP %EDI,%EDX JA above
(2)若EAX > ESI,转到greater执行;
CMP %ESI,%EAX JG greater
(3)若ECX = 0,转到zero执行;
CMP $0,%ECX JE zero
(4)若EAX-ESI产生溢出,转到overflow执行;
(1)
decl %ecx
jz contiune
movl %eax,%ebx
contiune:
(2)
addl $1,%ecx
jnc contiune
movl %eax,%ebx
contiuniune
movl %eax,%ebx
contiune:
解答
习题9.有如下程序片断,请使用一条指令代替其中的两条指令:
(1)
again:
...
jz next
jmp again
next:
(2)
again:
...
jle next
jmp again
next:
解答:(1)jnz again
(2)jg again
10.
假设EAX和ESI存放的是有符号整数,EDX和EDI存放的是无符号整数,请用比较指令和条件转移指令实现以下判断:
(1)CMOVNZ %eax, %ebx
(2)CMOVC %eax, %ebx
(3)CMOVA %eax, %ebx
12.
现代处理器当中,简单的多条指令常比一条复杂的指令执行速度快。例如,GCC编译器就不使用LOOP指令,而是使用与其功能相同的两条指令,这两条指令是什么?
dec %ecx
jnz loop
解答:不能。不能对EIP寄存器直接赋值。使用指令jmp done可以实现。
习题6
条件转移指令Jxx所利用的条件保存在何处?有多少个不同条件的转移指令?
保存在EFLAGES寄存器中
共16个(P107)
习题7
JA和JG指令发生跳转的条件都是“大于”,它们有什么区别?
在处理带符号值和无符号值时有所区别。计算无符号值时,使用JA,对于带符号值,使用JG。
(3)循环指令,LOOP、LOOPE等。
3.
相对于BASIC语言中GOTO语句作用的IA-32处理器指令是哪条?
跳转指令jmp
习题4.
IA-32处理器通过改变EIP寄存器的数值就可以改变程序,如果程序需要无条件跳转到标号done位置执行,使用“MOVL done, %EIP”语句是否可以达到,为什么?如果不能实现该功能,应该使用哪条指令?
相关文档
最新文档