微型计算机原理王忠民课后参考答案汇编语言程序设计
汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计第四版【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
微机原理王忠民版课后答案

部分习题答案(3) 0.1101 1B= 0.84375 = 0.D8H (4) 11110.01 B= 30.25 =1E.4H3、完成下列二进制数的加减法运算(1)1001.11 + 100.01 = 1110.0001110101.0110(4) 01011101.0110 — 101101.1011 = 101111.10114、 完成下列十六进制数的加减法运算(1) 745CH + 56DFH= D14B H (2)ABF.8H — EF6.AH = 9C28.E H(3)12AB.F7 + 3CD.05= 1678 .FC H (4) 6F01H — EFD8H= 7F29 H5、 计算下列表达式的值 103.CEH(3) 18.9 + 1010.1101B + 12.6H — 1011.1001 = 36.525 6、选取字长n 为8位和16位两种情况,求下列十进制数的补码。
(1) X=— 33的补码: ⑵ Y=+ 33的补码: 0010 0001 ,0000 0000 0010 0001⑶Z=— 128 的补码:1000 0000 , 1111 1111 1000 0000⑷ N=+ 127的补码:0111 1111 , 0000 0000 0111 1111A=— 65的补码:1011 1111 , 1111 1111 1011 1111 ⑹ B=+ 65的补码: 0100 0001 , 0000 0000 0100 0001 ⑺ C=— 96的补码:1010 0000 , 1111 1111 1010 0000(8) D=+ 96的补码:0110 0000 , 0000 0000 0110 0000 7、写出下列用补码表示的二进制数的真值(1) [X 补=1000 0000 0000 0000 H X = — 1000 0000 0000 0000 H =— 32768(2)[Y 补=0000 0001 0000 0001 HY = + 0000000100000001 H =+ 257(3) [Z 补=1111 1110 1010 0101 HZ= — 0000 0001 0101 1011 H =—347(4)[A 补=0000 0010 0101 0111 HA= + 0000 0010 0101 0111 H =+ 5998、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。
微机原理王忠民版 课后答案

部分习题答案第二章计算机中的数值与编码1、将十进制数转换为二进制与十六进制(1) 129、75=1000 0001、11B=81、CH(2) 218、8125=1101 1010、1101B=DA、DH(3) 15、625=1111、101B=F、AH(4) 47、15625=10 1111、0010 1B=2F、28 H2、将下列二进制数转换为十进制与十六进制(1) 111010 B=58 =3A H(2) 1011 1100、111B= 188、875= BC、E H(3) 0、1101 1B=0、84375 =0、D8H(4) 11110、01 B=30、25 =1E、4H3、完成下列二进制数的加减法运算(1) 1001、11+100、01=1110、00(2) 1101010110、1001-01100001、0011=01110101、0110(3) 00111101+10111011= (4) 01011101、0110-101101、1011=101111、10114、完成下列十六进制数的加减法运算(1) 745CH+56DFH=D14B H (2) ABF、8H-EF6、AH=9C28、E H(3) 12AB、F7+3CD、05=1678 、FC H(4) 6F01H-EFD8H=7F29 H5、计算下列表达式的值(1) 128、8125+10110101、1011B+1F、2H=101010101、1010B(2) 287、68-10101010、11H+8E、EH=103、CEH(3) 18、9+1010、1101B+12、6H-1011、1001=36、5256、选取字长n为8位与16位两种情况,求下列十进制数的补码。
(1) X=-33的补码: 1101 1111, 1111111111011111(2) Y=+33的补码: 0010 0001, 0000 0000 0010 0001(3) Z=-128的补码:1000 0000, 1111 1111 1000 0000(4) N=+127的补码:0111 1111, 0000 0000 0111 1111(5) A=-65的补码: 1011 1111, 1111 1111 1011 1111(6) B=+65的补码: 0100 0001, 0000 0000 0100 0001(7) C=-96的补码: 1010 0000, 1111 1111 1010 0000(8) D=+96的补码: 0110 0000, 0000 0000 0110 00007、写出下列用补码表示的二进制数的真值(1) [X]补=1000 0000 0000 0000 H X=-1000 0000 0000 0000 H=-32768(2) [Y]补=0000 0001 0000 0001 H Y=+0000 0001 0000 0001 H=+257(3) [Z]补=1111 1110 1010 0101 H Z=-0000 0001 0101 1011 H=-347(4) [A]补=0000 0010 0101 0111 H A=+0000 0010 0101 0111 H=+5998、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果就是否溢出。
第三章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。
对地址的运算仅有+(加)、-(减)运算符。
微型计算机原理课后习题答案,王忠民主编,DOC

王忠民主编西安电子科技大学出版部分习题答案第二章计算机中的数值和编码1、将十进制数转换为二进制和十六进制(1)129.75=10000001.11B=81.CH(2)218.8125=11011010.1101B=2、3451F.2H=103.CEH(3) 18.9+1010.1101B+12.6H-1011.1001=36.5256、选取字长n为8位和16位两种情况,求下列十进制数的补码。
(1) X=-33的补码:1101(2) Y=+33的补码:00100001,0000000000100001(3) Z=-128的补码:10000000,1111111110000000(4) N=+127的补码:01111111,0000000001111111(5) A=-65的补码:10111111,11111111101111117=-=+=-=+8并判断结果是否溢出。
(1)43+8∵ [43]补=00101011B,[8]补=00001000B∴ [43]补+[8]补=00101011B+00001000B=00110011B=33H00101011B+00001000B00110011B∵C S=0,C D=0,OF=C S⊕C D=0⊕0=0∴无溢出(无(溢9z=?,10111000B①若为无符号数②若为带符号补码数∵CF=1 ∴不正确∵CF=1,DF=1 OF=0∴不溢出x+y=0B8H x+z=61H y+z=3BH z+v=0CCH①不正确不正确不正确正确②不溢出不溢出不溢出溢出第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器将从内2.4BX(Base)称为基址寄存器。
用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。
微型计算机原理(第二版)第5章

9
第5章 汇编语言程序设计
1 分段结构 汇编语言源程序的结构是分段结构形式,一个汇编语言
源程序由若干段(SEGMENT)组成,每个段以SEGMENT语句 开始,以ENDS语句结束。整个源程序的结尾是END语句。
微处理器对存储器的管理是分段的,因此,在汇编语言 程序中也要求分段组织指令、数据和堆栈,以便将源程序汇 编成为目标程序后,可以分别装入存储器的相应段中。
21
第5章 汇编语言程序设计 ② 寄存器。如ADD AX,CX ③ 标号。标号可以作为转移(无条件转移或条件转移)、过程 调用CALL以及循环控制LOOP指令的操作数。
如 JMP NEXT ④ 变量。因为变量是存储器中某个数据区的名字,所以在 指令中可以作为存储器操作数。
如 MOV AL,X1
22
将被看成是标识符,如常数B7H应写成0B7H,FFH应写成 0FFH。
字符串常数是由单引号括起来的一串字符。例如'179'和
'ABCDEFG'。单引号内的字符在汇编时都以ASCII的代码形式 存放在存储单元中。如上述两字符串的ASCII代码为41H,42H, 43H,44H,…,48H和31H,37H,39H。字符串最长允许有 255个字符。
DWORD (双字)、 QWORD (四字)、TBYTE(十字)等,表示数 据区中存取操作对象的大小。
17
第5章 汇编语言程序设计 (2) 助记符
汇编语言语句中的第二个组成部分是助记符(Memonic)。 在指令语句中,如MOV、ADC等。约有90多种,在指令 系统中的指令。 在伪指令语句中,如DB、SEGMENT、ENDS、END等。 它们在程序中的作用是定义变量的类型、定义段以及告诉汇编 程序结束汇编等。
汇编语言程序设计课后习题答案习题2详解

习题2写出从汇编语言源程序的建立到产生可执行文件的步骤和上机操作命令。
步骤:1.编辑形成文件(MY为文件名)2.汇编形成文件3.连接形成MYEXE文件上机操作:1.进入dos命令行方式2.在汇编语言的系统工作文件目录下,键入:Edit 按回车键编辑3.MASM MY 按回车键汇编4.LINK MY按回车键连接5.MY 按回车键运行6.DEBUG 按回车键进行调试。
列表文件.LST实在什么阶段产生的列表文件有哪些内容列表文件是在汇编的时候产生的执行 MASM 程序名程序名程序名按回车键就会在汇编的同时产生列表文件。
列表文件里有源程序和机器语言清单,指令和变量的偏移地址等等。
写出定义一个代码段的语句,段名为MYPRG。
MYPRG SEGMENTASSUME CS:MYPRGStart:Code endsEnd start源程序中用什么语句来结束程序的执行用什么语句来表示程序的结束和指出程序执行的起点。
MOV ah,4chINT 21h 结束程序的执行并返回到操作系统。
Code ends 程序结束End start 指出程序执行的起点汇编语言源程序的文件扩展名是什么把他改为.exe扩展名以后,可以认为是可执行程序么答:源文件的扩展名为.ASM。
改为.exe后不可能是可执行程序,源文件只有经历汇编行成机器指令,然后连接才能形成可执行程序列出子目录C:\YOUPRG下的扩张名为.ASM的所有文件,在D盘根目录下建立一个子目录,并进子目录MYPRG,再把C:YOUPRG下的文件YOU .ASM复制到D :\MYPRG下。
写出完成以上要求的DOS 命令。
答:C:\YOUPRG>DIY *.ASMC:\YOUPRG>D:D:\MD MYPRGD:\CD MYPRGD:\MYPRG>COPY C:\YOUPRG> D:\MYPRG2.7下图为DEBUG调入的可执行程序,回答以下问题:(1)程序的起始物理地址是多少结束地址是多少(2)CS寄存器的值是什么(3)程序的功能是什么(4)写出查看DS:0处内容的DEBUG命令。
汇编语言程序设计(第二版)课后习题答案-精品资料

汇编语言程序设计(第二版)课后习题答案第二章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寄存器的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.画图说明下列语句所分配的存储空间及初始化情况。
(1)
42H59H54H45H00HEEH00H07H01H02H01H02H07H00H07H01H02H01H02H07H00H07H01H02H0 1H02H07H
(2)00H00H01H00H02H00H00H00H01H00H02H00H00H00H01H00H02H00H00H00H01H00H02H00H 00H00H01H00H02H00H07H00HFBHFFH59H42H45H54H02H56H
2.(PLENTH)=22H;它表示数据与的长度
3.(L)=06H
4.(1)MOVBXOFFSETLNAME
(2)MOVSIWORDPTRCODE_LIST
(3)MOVCODE_LENGTHEQU$-CODE_LIST
5.(AX)=10
(BL)=10
(CL)=1
6.(1).(AX)=1
(2).(AX)=2
(3).(CX)=20
(4).(DX)=40
(5).(CX)=1
7.是说明下列指令中那些需要加上PR伪指令定义符。
(1).不需要(2)不需要(3)SUB[BX],WORDBYTE2(或其他形式)(4).MOVCL,BYTEPTRWVAL
8.编一宏定义BXCHG,将一字节高4位和低4位交换。
BXCHGMARCOOPR
MOVAL,OPR
MOVCL,04H
ROLAH,CL
RORAL,CL
ORAH,AL
MOVOPR,AH
ENDM
9.已知宏定义,展开宏调用:OPPBH,BL,CH,CL
+MOVAX,BX
+XCHGAL,CL
+MOVAX,BL
+XCHGAL,CH
+MOVBL,AL
10.将寄存器中的16位数分成四组,每组四位,分别存放在AL,BL,CL和DL中。
MOVCH,04H
MOVCL,AL
MOVDL,AL
SHRCL,CH
ANDDL,AH
MOVAL,AH
MOVBL,AH
SHRAL,CH
ANDBL,0FH
11.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NOMATCH.
解:DATASEGMENT
STRING1DB‘ABCDE’
STRING2DB‘ABCDEF’
MESG1DB‘MATCH$’
MESG2DB‘MATCH$’
DATAENDS
STACKSEGMENT
BUFDB100DUP()
STACKENDS
CODESEGMENT
MAINPROCFAR
START:PUSHDS
MOVAX,0
PUSHAX
PUSHES
MOVAX,DATA
MOVDS,AX
MOVAL,STRING1
MOVCL,6
MOVSI,OFFSETSTRING1
MOVDI,OFFSETSTRING2
CLD
REPECMPSB
JZALLMATCH
MOVDXOFFSETMESG2
MOVAH,9
INT21H
RET
ALLMATCH:MOVDXOFFSETMESG1
MOVAH9
MOV21H
RET
MAINENDP
CODEENDS
ENDSTART
13.编写程序,将一个包含有20个数据的数组M分成两个数组,正数组P和负数组,分别把这两个数组中的数据的个数显示出来。
解:DATASEGMENT
MDB1,2,3,4,5,6,7,8,9,10
DB-1,-2,-3,-4,-5,-6,-7,-8,-9,-10
PDB20DUP()
NDB20DUP()
DATAENDS
CODESEGMENT
MAINPROCFAR
START:PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAL,0
MOVSIOFFSETM
MOVCX20H
LOOP1:MOVBL,M[SI]
CMPAL,M[SI
JAELOOP2
MOVN,BL
INCSI
CMPCX,20H
JZLOOP3
JMPLOOP1
LOOP2:DECCX
MOVP,BL
INCSI
CMPCX,20H
JZLOOP3
JMPLOOP1
LOOP3:MOVDX,OFFSETP
MOVAH,9
INT21H
MOVDX,OFFSETN
MOVAH,9
INT21H
RET
MAINENDP
CODEENDS
ENDSTART
20.编写程序,求字节变量BVAR中的压缩BCD数转换为二进制数,并存入原变量中。
解:DATASEGMENT
BVARDW53H,00H
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:CODE,DS:DATA
START:PUSHDS
MOVAX,0
PUSHDS,AX
MOVAX,DATA
MOVDS,AX
MOVAL,BYTEPTRSW
MOVAH,AL
ANDAX,0F00FH
MOVCL,4
SHLAH,CL
MOVSW,AX
RET
MAINENDP
CODEENDS
ENDSTART。