汇编语言第6章答案
汇编语言-第二版-王爽-完整答案
汇编语言-第二版-王爽-完整答案
第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=F4A3H
mov ah,31H AX=31A3H
mov al,23H AX=3123H
add ax,ax AX=6246H
mov bx,826CH BX=826CH
mov cx,ax CX=6246H
mov ax,bx AX=826CH
add ax,bx AX=04D8H
mov al,bh AX=0482H
mov ah,bl AX=6C82H
第6章 程序设计语言 习题与答案
第六章习题 P159-161
一、复习题
1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。
自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,
用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。(P144- P146)
2、试述计算机语言的类型,它们各有什么特点?
1.机器语言,是最低级的语言,由二进制码组成,最早期的程序员通过在纸带上打点来写程序
2.汇编语言,用助记符和地址符代替了二进制码,更易于编写。
3.高级语言,相对于汇编语言又上升了一步,更接近于自然语言,如C语言、Pascal、Java、C#等都是高级语言。(P145-147)
3、列举程序设计语言的几种范型。
程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。(P147-149)
4、简述语言虚拟机。
提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P156)
5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?
提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。
编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。编译方式是一次编译,然后执行程序可以反复多次执行。
32位汇编语言程序设计部分课后习题答案
20
习题解答
习题2.14
• 按照如下输出格式,在屏幕上显示ASCII表 • 编程在数据段直接构造这样的表格、填写相应
ASCII 代码值(不是字符本身),然后使用字 符串显示子程序DISPMSG实现显示
21
习题解答
习题2.14解答1
table 13,10 13,10 byte '20 |',20h,20h,21h,20h,22h,20h,23h,20h, 24h,20h,25h,20h,26h,20h,27h,20h,28h,20h,29h,20h byte 2ah,20h,2bh,20h,2ch,20h,2dh,20h,2eh,20h, 2fh,20h,13,10 byte '30 |',30h,20h,31h,20h,32h,20h,33h,20h, 34h,20h,35h,20h,36h,20h,37h,20h,38h,20h,39h,20h byte 3ah,20h,3bh,20h,3ch,20h,3dh,20h,3eh,20h, 3fh,20h,13,10 …… byte 0 22 .data byte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',
6
习题解答
1.3 填空题-2
(7)逻辑地址由___和___两部分组成。代码段中下一 条要执行的指令由CS和___寄存器指示,后者在实地 址模型中起作用的仅有___寄存器部分。 • 段基地址,偏移地址,EIP,IP (10)MASM要求汇编语言源程序文件的扩展名是___, 汇编产生扩展名为OBJ的文件被称为___文件,编写 32位Windows应用程序应选择___存储模型。 • ASM,目标模块,FLAT
汇编语言课后答案第6章
第6章习题
6.1 主程序与子程序之间进行参数传递有哪几种方法?简单说明并比较。
6.2 编写一个子程序,把16位二进制数转换为5位十进制数ASCII码。
6.3 编写一个把16位二进制数转换为4位十六进制数ASCII码的子程序
6.4 编写一个计算字符串长度的子程序,字符串以0为结尾标志。入口参数:字符串的首
地址指针为DS:SI;出口参数:在AX中返回字符串的长度。
6.5 编写程序,将字符串STING1的内容复制到字符串STRING2中。要求由子程序来实现字
符串的复制,并采用寄存器来传递参数。
6.6 用通过存储单元传递参数的方法完成上题。
6.7 用通过堆栈传递参数的方法完成上题。
6.8 设计程序,从键盘接收一个字符串,显示字符串的长度,要求计算长度的工作由子程
序来实现。
6.9 编程计算三个变量的绝对值之和,求绝对值采用子程序结构以简化程序。
6.10 编写程序完成运算X=A*B+C(设各数及结果都不超过65536),A、B、C为从键盘输入
的十进制数,要求从键盘接收十进制数并转换为二进制的工作由子程序来完成。
6.11 编写程序,将内存缓冲区BUFFER1中的10个压缩型BCD码数转换成非压缩的BCD码,
保存到缓冲区BUFFER2中。要求转换工作由子程序来完成。
6.12 从键盘输入一组字符,直到按ESC键为止,存储在内存缓冲区BUFFER中。要求用子程
序来实现当输入字符为a~z时,则修改为A~Z。
6.13 阅读下面子程序,说明它完成的功能是什么?子程序的入口参数和出口参数各是什
么?
SUM16 PROC NEAR
第6章程序设计语言习题与答案
第六章习题
(1)复习题
1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。
自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。这些使用助记符语言的语言后来就被称之为汇编语言。
(P135P136)
2、什么是高级程序设计语言?它有什么特点?
高级语言是汇编语言的一种抽象。高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。
(1)高级语言接近算法语言,易学、易掌握;
(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;
(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;
(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。
(P138)
3、列举程序设计语言的几种范型。
程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。
(P138-140)
4、简述语言虚拟机。
提示:语言虚拟机是某种语言的解释器。语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。这样使得硬件系统能够支持这种语言编写的程序的有效执行。目前最流行的语言虚拟机是Java虚拟机。(P147)
5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?
《汇编语言》各章习题答案
汇编语言各章习题答案
习题一答案:
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=AAH
1.2 5E8AH,0BE6H,3DEH,4940H
1.3 00011101+00110101=01010010=52H=82
01001001+11101000=00110001=31H=49
10111110+01010010=00010000=10H=16
10011010+11110001=10001011=8BH= -117
1.4 00101001+01010011=01111100+00000110=10000010=82H=82
01110011-00100100=01001111-00000110=01001001=49H=49
01100110+00011000=01111110+00000110=10000100=84H=84
0000000100110010+01110101=0000000110100111+00000110
=0000001000000111=0207H=207
1.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H
1.6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 1.7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码
《汇编语言》作业答案
3545233.doc 制作:江家宝
《IBM—PC汇编语言程序设计》课后作业参考答案目录
第一章:基础知识 ........................................................................................ 2第二章:80×86计算机组织......................................................................... 2第三章:80×86的指令系统和寻址方式..................................................... 3第四章:汇编语言程序格式........................................................................ 7第五章:循环与分支程序设计.................................................................... 9第六章:子程序结构 ................................................................................ 12第七章:高级汇编语言技术.................................................................... 20第八章:输入输出程序设计.................................................................... 22第九章:BIOS和DOS中断 (23)
32位汇编语言程序设计第6、7章习题答案
习题6
2.指出下面转移指令的类型(相对近转移,相对短转移,间接转移)。
.DATA
addrS t ore DWORD ?
.CODE
……
again:
……
(3 instructions)
jmp again;短转移
……
(200 instructions)
……
jmp again ;近转移
……
jmp addrStore;段内间接转移
……
jmp eax ;段内间接转移
……
jmp [edi] ;段内或段间间接转移
3.代码段有以下指令:
ADD EAX, EBX
JNO L1
JNC L2
SUB EAX, EBX
JNO L3
JNC L4
JMP SHORT L5
如果EAX和EBX的内容如下:
(1)EAX=0102147BH,EBX=120180DCH ;L1
(2)EAX=12348756H,EBX=800080DCH ;L1
(3)EAX=D0230000H,EBX=9FD0000H ;L3
(4)EAX=94B70000H,EBX=B568000H ;L1
指令执行完后,程序怎样转移?
4.假设EAX和EBX的内容是无符号数,ECX和EDX的内容是有符号数,请用比较指令实现以下判断:
(1)如果EDX的内容大于ECX的内容,则转去执行L1;
cmp edx, ecx
jg L1
(2)如果EAX的内容大于EBX的内容,则转去执行L2;
cmp eax, ebx
ja L2
(3)如果ECX=0,则转去执行L3;
cmp ecx, 0
jz L3
或
jecxz L3
(4)EAX-EBX是否会发生溢出,如果发生溢出则转去执行L4;
sub eax, ebx
汇编语言(王爽)第六章检测点与实验5
汇编语⾔(王爽)第六章检测点与实验5
检测点6.1
(1)依次⽤内存0:0~15单元中的内容改写程序中的数据,补全程序:
assume cs:codesg
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start:
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s:mov ax,[bx]
mov cs:[bx],ax ;确定⽬标区域段地址和偏移地址
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
(2)程序实现依次⽤0:0~15单元的内容改写程序中数据,数据传送⽤栈来进⾏。栈空间设置在程序内,补全程序:
assume cs:codesg
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0;10个字空间作为栈
start:
mov ax,cs ;设置栈的段地址
mov ss,ax
mov sp,1ah ;cs:0~cs:f为原始数据空间,cs:10~cs:19为栈空间,初始为空,栈顶指向下⼀单元
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s:push [bx] ;先把0:0处的字单元内容⼊栈
pop cs:[bx] ;再把栈顶内容出栈放⼊程序数据段中
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序
第6章软件编码
一、填空题(20小题)
1、源程序中加注释是帮助理解程序的重要手段,注释分为( )、( )两类。答案:序言性注释、功能性注释
2、通常考虑选用语言的因素有( )、( )、( )、( )和( )。
答案:项目的应用领域、软件开发的方法、软件执行环境、算法与数据结构的复杂性、软件开发人员的知识
3、从软件工程的观点,语言的工程特性是指( )、( )、( )和( )。
答案:可移植性、开发工具的可利用性、软件的可重用性、可维护性
4、编写操作系统、编译系统等系统软件时,可选用( )、( )、( )和( )等。
答案:汇编语言、C语言、Pascal语言、Ada语言
5、效率是一个( )要求,目标在( )给出。
答案:性能、需求分析
6、提高程序效率的根本途径在于选择良好的( )、良好的( ),而不是靠编程时对程序语句做调整。
答案:设计方法、数据结构与算法
7、语句构造的原则是( ),不能为了追求效率而使代码( )。
答案:简单直接、复杂化
8、程序设计语言的心理特性在语言中的表现形式为( )、( )、( )、( )和( )。
答案:歧义性、简洁性、局部性、顺序性、传统性
9、语言的心理特性在语言中的表现形式有:( )、( )、( )、( )和( )。
答案:歧义性、简洁性、局部性、顺序性、传统性
10、程序设计语言的简洁性是指人们必须记住的( )的数量。人们要掌握一种语言,需要记住的成分数量越多,简洁性越( )。
答案:语言成分、差
11、在软件的设计中占有极其重要地位的是软件功能结构,它是联系( )跟开发者的规格说明。
第6章8086汇编语言程序设计
这 2 行程序应出现在代码段中主程序的最后,以便程序结束后 返回DOS。
2、1 个简单的程序:从键盘任意输入一串字符,然后反序输出。 3、MASM 的使用
6.4 查表法程序设计方法
1、查表指令 格式: XLAT 该指令的作用是:有 1 张表(字节类型)的首地址预先存放 在 BX 中,XLAT 指令执行后将 AL 中的值表示的表中的第几项内 容返回给AL,即: AL ←─ ( BX + AL ) 2、程序示例:将 AX 中的16位二进制数转换为 4 位16进制数的相 应ASCII码,存放在 BUF 缓冲区中。
(2)LABEL 语句 (等效 EQU THIS ) 6.3.2 汇编语言的结构 DATA SEGMENT 数据段 DATA CODE BUF DW 0,1FFFh X1 ENDS SEGMENT ASSUME CS:CODE,DS:DATA 代码段 主程序开始 主程序结束 START: MOV AX, DATA MOV DS, AX …………… CODE ENDS END START DB 0
X1 X2
0Ah FFh 00 00 30h 0Ah 22h 1Fh
X3
78h 56h 34h 12h 3Fh 00 00 00
在 BUF 的首地址单元存放了9个字节的 数据,它们是这些字符的ASCII码值。
(3) ? 数据 在定义数据时,有时使用 ? ,如: X1 DB ? 表示定义一个字节的未知数据,起始地址表示为 X1 。 2、重复操作符 DUP 如: BUF DB 100DUP(0)
6、3位微机原理、汇编语言及接口技术课后习题答案
第一章
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. 查询传送方式:适合于低速外设与主机之间数据传送。
3. 中断传送方式:适合于低速外设与主机之间数据传送。 4. 直接存贮器(又称DMA)传送方式:适合于高速外存 与主机的数据传送。
二、 外设与主机传送的接口与信息
1. 端口与接口 计算机的外设都是通过接口连接到系统上,每个接口 由一组寄存器组成,寄存器都有一个称为I/O端口的地址 编码。 也就是,每一台外设都通过硬件接口与主机端口相连, 并交换信息。 CPU I/O存贮空 内存 间(端口) 主机 接 口 I/O操 作
②中断响应
③中断处理 ④中断返回
一、 中断的概念
中断系统:实现中断的软硬件设施。 硬件有:8259A、中断源、中断请求等。 软件有:中断向量表、中断处理程序。
二、 中断源
1. 内中断 来自CPU内部事件:
① 程序中使用的INT指令产生的中断;
② CPU的某些错误结果产生的中断(除法、溢出、单
步)。
3. 函数的定义、调用与说明 (1)函数定义伪指令: 格式:函数名 PROC [函数类 型][语言类型][USES寄存器 表][参数名: 参数类型] (2) 函数调用伪指令: 格式:INVOKE 函数名[, 参 数] … 例:
RADIX_S PROC NEAR STDCALL USES EBX, EDX, SI, lpResult: WORD, Radix: DWORD, Num: DWORD LOCAL Count: WORD … RET RADIX_S ENP … INVOKE RADIX_S, SI, 10, EAX
大学汇编语言基础试题4
汇编语言基础试题4
第六章数据传送指令
一、程序分析题(阅读程序段后给出其运行结果)
设(SP)=80H,(BX)=0FFH;(AX)=1
PUSH BX
ADD BX,AX
XOR BX,AX
PUSH BX
POP 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.25040H
B.30040H
C.25100H
D.55040H
4.下列传送指令中,有语法错误的指令是(A)。
A.MOV CS,AX
B.MOV DS,AX
C.MOV ES,AX
D.MOV SS,AX
5.与MOV BX,OFFSET VAR指令完全等效的指令是(D)。
A.MOV BX,VAR
B.LDS BX,VAR
C.LES BX,VAR
D.LEA BX,VAR
6.MOV SP,3210H
PUSH AX执行上述指令序理后,SP寄存器的值是(B)。
A.3211H
B.320EH
C.320FH
D.3212H
7.执行指令PUCH CX后堆栈指针SP自动(C)
A.+1
B.不操作
C.-2
D.-1
三、简答题
已知数据段定义如下:
DATA SEGMENT
《微机原理与汇编语言》第6章
2012年9月23日
11
微机原理与汇编语言
第四章
存储器
单管动态基本存储电路中,数据信息存储在电容C1上。 C1是MOS管栅极与衬底之间的分布电容。若C1上存有电荷,
表示信息为“1”,否则为“0”。而由三管或四管组成的一
个基本存储电路,也是靠MOS管栅极与衬底之间分布电容来 记忆信息的。虽然MOS管是高阻器件,漏电流小,但漏电流
2012年9月23日 17
微机原理与汇编语言
第四章
存储器
动态RAM除了进行读写操作外,还要定时进行刷新操作
以保证存储器正常工作。刷新方式有以下3种:
◆ 在几毫秒时间内每隔一段时间刷新一次。以2116为 例,在2 ms时间内要刷新128行,若每隔15 s刷新一行, 则在1.92 ms时间内可将128行轮流刷新一遍。 ◆ 在2 ms时间内集中一段时间进行刷新操作,在这段 时间内存储器不能进行读/写操作,将这段时间称为“死” 时间。 ◆ 在每一个指令周期中利用CPU不进行访内操作的时间
为了便于用户根据自己的需要来确定ROM中的内容,出现 了可编程的只读存储器(PROM),它可以由用户自己编程。 图6-7是一种32×8的熔丝式PROM结构图,每一个字为8位, 共32个字。每一个字的8位,实际上是一个多发射极(8个)管 ,每一个发射极通过一个熔丝与位线相连。管子工作在射极 输出器状态,当它被选中时,基极为高电位,故熔丝连着的 位经过读/写控制电路反相输出为“0”。若熔丝烧断,则位 线就不与管子的射极相连,经读/写控制电路反相输出为 “1”。出厂时所有管子的熔丝都是连着的,可由用户根据需 要把某些熔丝烧断,相当于存入“1”信息;未烧断的则相当 于存入“0”信息。
第6章 汇编语言程序设计
段。各种语言都有自己的特点、优势及运行环境,有
自己的应用领域和针对性。计算机语言的发展经历了 以下4个阶段:机器语言、汇编语言、高级语言和混合
语言。
1.机器语言
机器语言是最早期的计算机程序语言。它使用计算机能 够直接识别的二进制代码指令来编写程序,程序送入计算机 后可以直接执行,因而执行速度快。 但机器语言全是0和1组成的代码,使用复杂,不好记忆,
4.混合语言
混合语言并不是一种新出现的自成系统的新型语言, 而实际上是一种程序接口技术,实现不同语言间的相互调
用,从而发挥各自的优势,完成特殊功能。例如,如果要
做一个图像处理的应用系统,它涉及到对硬件图像采集卡 的访问,我们可以使用汇编语言编制图像采集卡的驱动程 序,用Visual C++编制界面及对采集来的图像进行各种处 理的程序,这样及时解决了单独一种语言不能解决的问题。
DW „Ab‟,‘C‟,‘D‟ ;对于字符型变量,每个字中不允许超过两个字 ;符,不足两个字符,高位补数字00。超过两个 ;字符的字符串只能用DB伪指令
3) 用问号作为表达式(注意:不带引号) 预留空间,不改变原内存内容,即不赋初值。图4.2中这 种表达式的格式为 DATA7 DB ? DATA8 DW ? 4) 带DUP(重复方式)的表达式
图6.2中属于地址表达式的变量有DATA11和
DATA12。表达式的格式为 DATA11 DW DATA4 ;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(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存放的是无符号整数,请用比较指令和条件转移指令实现以下判断:
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指令代替如下程序片断中的条件转移指令和其后的传送指令(含标号):
习题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
(3)循环指令,LOOP、LOOPE等。
3.
相对于BASIC语言中GOTO语句作用的IA-32处理器指令是哪条?
跳转指令jmp
习题4.
IA-32处理器通过改变EIP寄存器的数值就可以改变程序,如果程序需要无条件跳转到标号done位置执行,使用“MOVL done, %EIP”语句是否可以达到,为什么?如果不能实现该功能,应该使用哪条指令?
解答:不能。不能对EIP寄存器直接赋值。使用指令jmp done可以实现。
习题6
条件转移指令Jxx所利用的条件保存在何处?有多少个不同条件的转移指令?
保存在EFLAGES寄存器中
共16个(P107)
习题7
JA和JG指令发生跳转的条件都是“大于”,它们有什么区别?
在处理带符号值和无符号值时有所区别。计算无符号值时,使用JA,对于带符号值,使用JG。
习题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)CMOVNZ %eax, %ebx
(2)CMOVC %eax, %ebx
(3)CMOVA %eax, %ebx
12.
现代处理器当中,简单的多条指令常比一条复杂的指令执行速度快。例如,GCC编译器就不使用LOOP指令,而是使用与其功能相同的两条指令,这两条指令是什么?
dec %ecx
jnz loop
(1)
decl %ecx
jz contiune
movl %eax,%ebx
contiune:
(2)
addl $1,%ecx
jnc contiune
movl %eax,%ebx
contiune:
(3)
cmpl %ebx,%eax
jbe contiune
movl %eax,%ebx
contiune:
解答
第
习题1.指令指针EIP是通用寄存器还是专用寄存器?有指令能够直接给它赋值吗?哪些指令的执行会改变它的值?
解答:EIP是专用寄存器,不能通过指令直接给它赋值。可以改变其值的指令有:
(1)无条件分支,包括:跳转(jmp)、调用(call)、中断(int)。
(2)条件分支,与标志位CF、OF、PF、SF、ZF相关的条件跳转指令。
cmp $0,%ecx
je源自文库address