汇编语言程序设计课后习题解答宋人杰2版
《汇编语言程序设计》教案及答案第二版-2007
《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言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 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (13)3.180X86的寻址方式 (13)3.2程序占有的空间和执行时间 (15)3.380X86的指令系统 (15)第 4 章汇编语言程序格式 (32)4.1汇编程序功能 (32)4.2伪操作 (32)4.3汇编语言程序格式 (36)4.4汇编语言程序的上机过程 (39)第 5 章循环与分支程序设计 (42)5.1循环程序设计 (42)5.2分支程序设计 (43)5.3如何在实模式下发挥80386及其后继机型的优势 (43)第 6 章子程序结构 (45)6.1子程序的设计方法 (45)6.2子程序的嵌套 (46)6.3子程序举例 (46)第7 章高级汇编语言技术 (48)7.1宏汇编 (48)7.2重复汇编 (49)7.3条件汇编 (50)第8 章输入/输出程序设计 (51)8.1I/O设备的数据传送方式 (51)8.2程序直接控制I/O方式 (52)8.3中断传送方式 (52)第9 章BIOS和DOS中断 (55)9.1键盘I/O (55)9.2显示器I/O (57)9.3打印机I/O (58)9.4串行通信口I/O (59)第10 章图形与发声系统的程序设计 (60)10.1显示方式 (60)10.2视频显示存储器 (60)10.3EGA/VGA图形程序设计 (61)10.4通用发声程序 (62)10.5乐曲程序 (63)第11 章磁盘文件存取技术 (64)11.1磁盘的记录方式 (64)11.2文件代号式磁盘存取 (65)11.3字符设备的文件代号式I/O (66)11.4BIOS磁盘存取功能 (67)附录:《IBM—PC汇编语言程序设计》习题参考答案 (68)第一章.习题 (68)第二章.习题 (69)第三章.习题 (70)第四章.习题 (83)第五章.习题 (88)第六章.习题 (107)第七章.习题 (120)第八章.习题 (126)第九章.习题 (131)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
第三章8088汇编语言程序设计微机原理第2版课后答案
第三章8088汇编语⾔程序设计微机原理第2版课后答案第三章 8088汇编语⾔程序设计本章的主要内容是汇编语⾔语句⾏的构成,源程序的结构,汇编语⾔程序设计⽅法。
3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分⽀、循环结构的程序设计,⼦程序结构的设计与调⽤,中断指令的应⽤。
另外,汇编语⾔伪指令的使⽤、源程序的结构等也是必须掌握的。
3.1.1 汇编语⾔语句⾏的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最⼤长度不超过31个字符。
(2)保留字:汇编语⾔中保留下来的具有特殊⽤途的字串,如指令、伪指令、寄存器名等都是保留字。
保留字不可⽤作标识符。
(3)界符:程序或指令中两个部分的分隔符号。
汇编语⾔源程序中可⽤的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使⽤不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。
2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。
(2)变量:即内存单元的符号地址。
变量不能与保留字、段名重名。
它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。
类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。
(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。
标号不能与保留字重名,可使⽤字母、数字及下划线,但不允许⽤数字开头,字符个数不超过31个。
标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。
3.表达式表达式是作为语句的⼀个操作数,在汇编时⼀个表达式得到⼀个值。
(1)操作数数据——常数、符号常量;存储单元地址——常⽤符号地址表⽰。
(2)运算符算术运算符:+、-、*、/、MOD。
对地址的运算仅有+(加)、-(减)运算符。
《汇编语言》第二版习题答案(全)
教材:《汇编语言》检测点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)8根数据总线一次可以传送8位二进制数据(即一个字节)。
(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。
IBM-PC汇编语言程序设计课后习题答案第二版doc
第一章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) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6)-85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+01001100B=11110111B=0F7H;CF=0;OF=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。
汇编语言程序设计课后答案
汇编语言程序设计课后答案天龙百度@n维空间提供第二章(更新完毕~)1。
在80x86微机的输入输出指令中,i/o端口号通常就是由dx寄存器提供更多的,但是有时也可以在指令中轻易选定00---ffh的端口号。
何况,可以轻易由指令选定的i/0端口数~解答:有256个~~书上有原话~~可以找到~~2。
存有两个16十一位字节1ee5h和2a3ch分别存放在80x86微机的存储器的000b0h 和000b3h单元中,Poissons图则表示出来它们在存储器里的放置情况。
解答:如下图.第一个络子为000b0h字单元,注意,是字单元~~第五个格子为000b3h字单元~e51e3c2a唉,羞愧,学计算机的,竟然连个表格也搞不好!3.图在书上,我就不图画了,太麻烦~~轻易请问吧~解答: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)表示运算结果为oflags(6)将要执行的指令地址ip(7)将要从堆栈抽出数据的地址bp,sp,ss天龙百度@n维空间提供8。
可以用以命令存储器地址的寄存器存有: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.解答:有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)ADD AL,[BX][SI](3)ADD[BX][0B2H],CX(4)MOV AX,2A59H ADD[0524H],AX(5)ADD AL,0B5H3.(1)寄存器间接寻址MOV BX,OFFSET[BLOCK][0AH]MOV DX,[BX](2)寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3)基址变址寻址MOV BX,BLOCKMOV SI,OAHMOV DX,[BX][SI]4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2 1200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
汇编语言程序设计(第二版) 钱晓捷 习题答案
汇编语言程序设计(第二版) 钱晓捷 习题答案第二章(01)2.1(1)AX =1200h(2)AX =0100h(3)AX =4C2Ah(4)AX =3412h(5)AX =4C2Ah(6)AX =7856h7)AX =65B7h ( 2.2(1) 两操作数类型不匹配(2) IP 指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为 [BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table 的首地址,BX =200Hmov al,8 ;传送欲转换的数字,AL =8xlat ;转换为格雷码,AL =12H2.4堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH 和POP 。
2.5mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.7 W=X+Y+24-Z w w w .k h d a w .c o m 课后答案网2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax 存商,dx 存余数2.10;(1)xchg 的操作数不能是立即数(2不能对CS 直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc 的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in 不支持超过FFH 的直接寻址(8)out 只能以AL/AX 为源操作数第二章(02)2.11;指令 AX 的值 CF OF SF ZF PF Mov ax,1407h 1470h - - - - - And ax,ax 1470h 0 0 0 0 0 Or ax,ax 1470h 0 0 0 0 0 Xor ax,ax 0 0 0 0 1 1 Not ax 0ffffh - - - - - Test ax,0f0f0h 0ffffh 0 0 1 0 1 注意: 1. mov, not 指令不影响标志位2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
汇编语言程序设计课后习题答案
DATAS ENDS
CODES SEGMENT ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS MOV DS,AX mov cx,count dec cx
5.1 L3 5.2 DATAS SEGMENT
x db ? Y db ? DATAS ENDS
CODES SEGMENT ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS MOV DS,AX cmp x,0 jg y01 jl y02 mov y,0 jmp y03
MOV AH,4CH INT 21H CODES ENDS END START
1. REP
REP REPNZ 2.
DF
STD DI
CLD DI
DF 1 DF 0
REPZ REPNZ
MOVS STOS CMPS SCAS
PSW
1
SI
0
SI
MOV DS,AX LEA BX, BUFF MOV CX,10
DEC CX MOV AL,[BX]
LOP: INC BX CMP AL,[BX] JNB NEXT MOV AL,[BX]
NEXT: DEC CX JNZ LOP MOV AH,4CH INT 21H
CODE ENDS END START
3.1 NEXT, 2_NEXT , NEXT2 , NexT N•EXT , NEXT-1 , NEXT, N@EXT NEXT$
2_NEXT
N•EXT
•
汇编语言程序设计(第二版)课后题答案
4.1、判断下列标识符的合法性。
1)、code 合法2)、Data 合法3)、ABCDH 合法4)、1abcH 不5)、eax 不6)、01 合法7)、A?@ 合法8)、www@zsu 合法9)、***********.cn不10)、AX$DX 合法11)、_BX 合法12)、CX 不4.2、按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或省缺)。
1)、定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;DB 20,20 DUP(0)2)、定义一个以0为结束符的字符串,其初值为:The course is easy;DB “The course is easy”,03)、定义一个以'$'为结束符的字符串,该串中含有换行符和回车符;DB 0D,0A,”$”4)、定义100个字,其初值为0;DW 100 DUP(0)5)、从一个偶地址开始定义一个字变量word;EVENWORD DW ?6)、先定义一个字符串String,其偏移量指定为10,其初值为"ABCDEF",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同;ORG 10STRING DB "ABCDEF"ORG 10DATA DW 3 DUP(?)7)、定义一个字符串String,其初值为"12345678",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元;STRING DB "12345678"ORG $-8DATA DW 4 DUP (?)4.3、把下列C语言的变量定义语句改写成与之等价的汇编语言语句。
1)、char ch1, ch2[3], ch3[]="Are you ready?", ch4='Q';CH1 DB ?CH2 DB 3 DUP (?)CH3 DB "Are you ready?",0CH4 DB “Q”2)、int w1, w2[5], w3=0x1234, w4[]={90, 89, 432, 344};W1 DW ?W2 DW 5 DUP (?)W3 DW 1234HW4 DW 90,89,432,3443)、long int d1=1234, d2, d3[10], d4[]={1, 2, 3, 4, 5, 6};D1 DD 1234D2 DD ?D3 DD 10 DUP(?)D3 DD 1,2,3,4,5,64.4、假设4.3题中三组变量在内存中是连续存放的,且变量ch1的偏移量是20H,试求出其它每个变量的偏移量。
IBMPC汇编语言程序设计第二版答案
IBMPC汇编语言程序设计第二版答案在IBMPC汇编语言程序设计第二版中,你将学习到关于汇编语言的基本概念和技巧,以及如何在IBMPC上进行程序设计。
本文将为你提供该教材的答案,以帮助你更好地理解和掌握相关知识。
第一章:引言本章主要介绍了汇编语言的概念和历史背景,以及为什么学习汇编语言在计算机科学领域中至关重要。
课后习题包括:1. 解释汇编语言的概念和作用。
2. 证明学习汇编语言的重要性。
第二章:基本概念本章讨论了汇编语言的基本概念,包括寄存器、内存、指令、操作数等。
课后习题包括:1. 列出IBMPC的主要寄存器及其作用。
2. 解释内存和指令的概念。
3. 指出指令中的操作数是什么以及如何使用它们。
第三章:汇编语言程序的结构本章介绍了汇编语言程序的结构,包括程序开始和结束的标记、数据段和代码段的定义等。
课后习题包括:1. 解释并举例说明程序开始和结束标记的作用。
2. 编写一个简单的汇编语言程序,包含数据段和代码段的定义。
第四章:数据传送和运算指令本章详细讨论了数据传送和运算指令,并提供了具体的例子和实践习题。
课后习题包括:1. 解释MOV指令的功能和用法。
2. 使用ADD指令完成两个数相加的程序。
第五章:程序控制指令本章讲解了程序控制指令,如条件和无条件转移指令、循环指令等。
课后习题包括:1. 说明条件转移指令如何工作。
2. 使用循环指令编写一个计算阶乘的程序。
第六章:子程序本章介绍了子程序的概念和使用方法,以及如何传递参数和返回值。
课后习题包括:1. 解释子程序的作用和优势。
2. 编写一个带有参数和返回值的子程序。
第七章:栈与堆栈本章详细讨论了栈的概念和操作,以及堆栈的使用方法。
课后习题包括:1. 说明栈和堆栈的区别。
2. 编写一个使用堆栈实现函数调用的程序。
第八章:位操作与逻辑运算本章介绍了位操作和逻辑运算的指令,以及如何使用它们进行位级别的操作。
课后习题包括:1. 解释位操作指令的功能和应用。
汇编语言程序设计教程(第二版)习题参考答案
汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。
科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。
书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。
2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。
电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。
计算机能同时处理二进制信息的位宽定义为计算机的字长。
如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。
4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。
非数值数据如字符、字符串、逻辑值等。
(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。
二进制用B,如10101010B八进制用Q,如437Q。
十进制用D或不用,如54D,或54。
十六进制用H,如27A8H10.完成下列二进制数的加减运算。
(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。
(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。
程序设计第二版习题答案
程序设计第二版习题答案程序设计第二版习题答案在学习编程的过程中,我们经常会遇到一些难题和疑惑。
而《程序设计第二版》这本书,作为一本经典的编程教材,为我们提供了丰富的习题。
在这篇文章中,我将为大家提供一些《程序设计第二版》习题的答案,希望能够帮助大家更好地理解和掌握编程知识。
第一章:引论1. 编程是什么?答案:编程是将问题转化为计算机可以理解和执行的指令的过程。
通过编程,我们可以利用计算机解决各种实际问题。
2. 什么是计算机程序?答案:计算机程序是一系列指令的集合,用于告诉计算机如何执行任务。
程序可以包含条件判断、循环、函数等结构,以实现特定的功能。
第二章:C++基础知识1. 什么是变量?答案:变量是用于存储数据的一块内存空间。
在C++中,我们可以通过声明变量来指定变量的类型和名称,然后可以对其进行赋值和操作。
2. 如何定义一个整型变量并赋初值为10?答案:可以使用以下代码来定义一个整型变量并赋初值为10:int num = 10;第三章:控制结构1. 什么是条件语句?答案:条件语句用于根据条件的真假来执行不同的代码块。
在C++中,常用的条件语句有if语句和switch语句。
2. 如何使用if语句判断一个数是否为正数?答案:可以使用以下代码来判断一个数是否为正数:if (num > 0) {cout << "该数为正数" << endl;} else {cout << "该数不为正数" << endl;}第四章:函数1. 什么是函数?答案:函数是一段封装了特定功能的代码块,可以通过函数名和参数来调用执行。
函数可以提高代码的可读性和重用性。
2. 如何定义一个函数来计算两个数的和?答案:可以使用以下代码来定义一个函数来计算两个数的和:int sum(int a, int b) {return a + b;}第五章:数组和指针1. 什么是数组?答案:数组是一种用于存储多个相同类型元素的数据结构。
汇编语言程序设计课后习题解答宋人杰2版
第1章汇编语言基础知识1.简述汇编语言源程序、汇编程序、和目标程序的关系。
答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。
2. 简述汇编语言的优缺点。
答:(1) 汇编语言的优点:①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
.②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
③可与高级语言配合使用,应用十分广泛。
(2) 汇编语言的缺点:①通用性和可移植性较差②相对于高级语言来说较繁锁、易出错、不够直观。
3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少?答:134. 1KB的存储器有多少个存储单元?答:1024个字节。
5. 指令中的逻辑地址由哪两部分组成?答:指令中的逻辑地址由段基址和偏移量组成。
6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。
(1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF答: (1) 13080H(2) 1A3F3H(3) 1A3F3H(4) 245EFH7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 0611 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。
答:字节型数据:11H字型数据:0A311H双字型数据:0113A311H8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若段内偏移地址为2228H,则段基地址为多少?答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH9. 在实模式环境中,一个段最长不能超过多少字节?答:64KB10. 实模式可寻址的内存范围是多少?答:1MB第2章 汇编语言源程序格式1.请解释变量和标号的含义,两者有何区别?答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。
计算机组成原理与汇编语言程序设计课后习题及解答(详解)
计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第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)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(5)外存容量——常用字节数表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
汇编语言程序设计习题答案
第一章. 习题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) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=11.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。
汇编语言程序设计习题答案
第一章. 习题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) 11111111答:(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) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76(6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。
汇编语言程序设计习题答案
第一章. 习题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) 11111111答:(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) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76(6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章汇编语言基础知识1.简述汇编语言源程序、汇编程序、和目标程序的关系。
答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。
2. 简述汇编语言的优缺点。
答:(1) 汇编语言的优点:①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
.②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
③可与高级语言配合使用,应用十分广泛。
(2) 汇编语言的缺点:①通用性和可移植性较差②相对于高级语言来说较繁锁、易出错、不够直观。
3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少?答:134. 1KB的存储器有多少个存储单元?答:1024个字节。
5. 指令中的逻辑地址由哪两部分组成?答:指令中的逻辑地址由段基址和偏移量组成。
6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。
(1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF答: (1) 13080H(2) 1A3F3H(3) 1A3F3H(4) 245EFH7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 0611 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。
答:字节型数据:11H字型数据:0A311H双字型数据:0113A311H8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若段内偏移地址为2228H,则段基地址为多少?答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH9. 在实模式环境中,一个段最长不能超过多少字节?答:64KB10. 实模式可寻址的内存范围是多少?答:1MB第2章 汇编语言源程序格式1.请解释变量和标号的含义,两者有何区别?答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。
变量和标号的主要区别在于变量指的是数据,而标号则对应的是指令。
2. 变量和标号有什么属性?答:都具有三种属性:段属性、偏移属性和类型属性 3. 伪指令语句与指令语句的区别是什么?伪指令有什么用途?答:伪指令并不像指令语句那样在程序运行期间由计算机自动执行,而是在汇编程序对源程序汇编期间由汇编程序处理的操作。
伪指令可以完成如处理器选择、定义程序模块、数据定义、存储区分配、指示程序开始和结束等功能。
4. 数值返回运算符有哪几种?简述LENGTH 和SIZE 的区别。
答:⑴数值返回运算符包括:SEG (取段地址)、OFFSET (取偏移地址)、TYPE (取类型值)、LENGTH (取长度)、SIZE (取总字节数)。
⑵对于变量中使用DUP 的情况,LENGTH 回送分配给该变量的单元数,对于其他情况则送1;而SIZE 会送分配给变量的总字节数,也就是LENGTH 和TYPE 的乘积。
5. 画图说明下列伪指令所定义的数据在内存中的存放形式。
(1) ARR1 DB 6,34H,-7 (2) ARR2 DW 3C5DH,1,?(3) ARR3 DB 2 DUP(1,2,DUP(2,5),3) (4) ARR4 DB ‘HELLO ’ (5) ARR% DB ‘1234’ 答:(1) 见题图2.106H 34H F9HARR1题图2.1(2) 见题图2.200H ARR201H 3CH 5DH - -- -题图2.2(3) 见题图2.302H ARR305H 02H 01H 05H 03H 02H 05H 02H 01H 05H 03H题图2.3(4) 见题图2.44CH ARR44CH 45H 48H 4FH题图2.4(5) 题图2.534HARR533H 32H 31H题图2.56. 写出下列变量定义语句。
(1) 为缓冲区BUF1预留20B 的存储空间。
(2) 将字符串‘ABCD’,‘1234’存放于BUF2存储区中。
答: (1) BUF1 DB 20 DUP(?) (2) BUF2 DB ‘ABCD ’ DB ‘1234’ 7. 符号定义语句如下:BUF DB 2,3,4,5,‘345’ EBUF DB 8LT DB EQU EBUF-BUF 问LT 的值是多少? 答:LT 的值为78. 假设程序中的数据定义如下: A DW ?B DB 16 DUP(?)C DD ? T EQU $-A问T 的值是多少?它表示什么意义?答:T的值是22;它表示从变量A到T之间分配的存储空间(字节)数目。
9. 如何规定一个程序执行的开始位置?主程序执行结束应该如何返回DOS?源程序在何处停止汇编过程?答:程序开始位置:END伪指令后的标号所对应的地址;应用程序开始伪指令.STARTUP处。
返回DOS:RET指令结合PUSH DS等指令;用DOS功能调用的第4CH号中断;.EXIT伪指令。
END伪指令处停止汇编过程。
10.EQU伪指令与“=”伪指令有何区别?答:在同一程序中,“=”伪指令可对一个符号重复定义11.指出下列伪指令表达方式的错误,并改正之。
(1) DATA SEG(2) SEGMENT ‘CODE’(3) MYDATA SEGMENT┇DATA ENDS(4) MAIN PROC FAR┇END MAINMAIN ENDP答:(1) SEG改为SEGMENT(2) 没有段名(3) DATA ENDS改为MYDATA ENDS(4) END MAIN删除第3章8086/8088寻址方式及指令系统1.什么是寻址方式,8086/8088微处理器有几种寻址方式,各类寻址方式的基本特征是什么?答:寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。
8086/8088微处理器的寻址方式分为数据寻址方式和程序转移寻址方式。
数据寻址方式主要包括立即数寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式和相对基址变址寻址方式;程序转移寻址方式主要包括段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址。
立即数寻址:操作数就在指令中,作为指令的一部分,跟在操作码后存放在代码段。
寄存器寻址:操作数在寄存器中,指令中指定寄存器号。
直接寻址方式:操作数在存储器中,指令直接包含操作数的有效地址EA。
寄存器间接寻址:操作数在存储器中,操作数的有效地址在SI,DI,BX,BP这4个寄存器之一中。
寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容加上8位或16位的位移之和。
基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)加上变址寄存器(SI,DI)的内容。
相对基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)和变址寄存器(SI,DI)的内容加上8位或16位的位移之和。
段内直接寻址:转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和。
段内间接寻址:转向的有效地址是一个寄存器或是一个存储单元的内容。
段间直接寻址:在指令中直接提供了转向段地址和偏移地址。
段间间接寻址:用存储器里的两个相继字的内容来取代IP和CS寄存器中的原始内容,以达到段间转移的目的。
2. 假定(DS)=1000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,变量TABLE的偏移地址为0100H,试指出下列指令的源操作数字段的寻址方式,它的有效地址(EA)和物理地址(PA)分别是多少?(1) MOV AX,[1234H] (2) MOV AX,TABLE(3) MOV AX,[BX+100H] (4) MOV AX,TABLE[BP][SI]答:(1) 直接寻址,EA=1234H,PA=11234H (2)直接寻址,EA=0100H,PA=10100H (3) 寄存器相对寻址,EA=0140H,PA=10140H(4)相对基址变址寻址,EA=0195H,PA=10195H3. 若TABLE为数据段0032单元的符号名,其中存放的内容为1234H,试问下列两条指令有什么区别?执行完指令后,AX寄存器的内容是什么?MOV AX,TABLELEA AX,TABLE答:第一条指令是取0032单元的内容,执行完后AX的内容是1234H 第二条指令是取TABLE的偏移地址,执行完后AX的内容为0032H4. 指出下列指令的错误。
(1) MOV CX,DL(2) MOV IP,AX(3) MOV ES,1234H(4) MOV ES,DS(5) MOV AL,300H(6) MOV [SP],AX(7) MOV AX,BX+DI(8) MOV 20H,AH答:(1) 两操作数长度不一致(2) 目的操作数不能为IP(3) 立即数不能直接送段寄存器(4) 两个段寄存器之间不能直接进行数据传送(5) 两操作数长度不一致(6) SP不能用作间址寄存器(7) BX+DI改为[BX][DI]或[BX+DI](8) 目的操作数不能为立即数5. 指出下列指令的错误。
(1) POP CS(2) SUB [SI],[DI](3) PUSH AH(4) ADC AX,DS(5) XCHG [SI],30H(6) OUT DX,AH(7) IN AL,3FCH(8) MUL 5答:(1) POP指令不允许使用CS(2) 两操作数不能同时是存储器寻址方式(3) 堆栈的操作必须以字为单位(4) 段寄存器不允许直接参加运算(5) XCHG指令的操作数不允许是立即数(6) OUT指令只能用AL做源操作数(7) 端口号大于255,必须将其放到DX中(8) MUL指令源操作数不允许是立即数6. 请分别用一条汇编语言指令完成如下功能。
(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
(2) 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3) 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
(4) 把数0A0H与AL寄存器的内容相加,并把结果送回AL中。
答:(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD AL,0A0H7. 求出以下各十六进制数与十六进制数58B0之和,并根据结果设置标志位SF、ZF、CF和OF的值。
(1) 1234H(2) 5678H(3) 0AF50H(4) 9B7EH答:(1)和为6AE4H,SF=0,ZF=0,CF=0,OF=0(2)和为0AF28H,SF=1, ZF=0, CF=0, OF=1(3)和为0800H, SF=0, ZF=0, CF=1, OF=0(4)和为0F42EH, SF=1, ZF=0, CF=0, OF=08. 执行指令ADD AL,72H前,(AL)=8EH,标志寄存器的状态标志OF、SF、ZF、AF、PF和CF全为0,指出该指令执行后标志寄存器的值。