IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(著)答案

合集下载

《汇编语言程序设计》教案及答案第二版-2007

《汇编语言程序设计》教案及答案第二版-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 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(著)答案

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(著)答案

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)答案第三章答案1-221.(1)立即寻址没有(2)直接寻址 7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址 0D5F0H(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,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。

(1)MOV AX,1200H 1200H(2) MOV AX,BX 0100H(3) MOV AX,[1200] 4C2AH 注意,是字单元!!(4)MOV AX,[BX] 同上(5)MOV 1100[BX] 4C2AH(6) MOV AX,[BX][SI] 7856H(7) MOV AX,1100[BX][SI] 65B7H5.(1) 7CD9H (2) 1200H (3) 6319H6. MOV BX,2000HLES DI ,[BX]MOV AX, ES:DI7.转向地址OBJ的值分别为:(1)064DH (2)0691H (3)05E0H注意有符号数的符号位8.(1) MOV AX,0ABH 立即数寻址无物理地址(2) MOV AX,BX 寄存器寻址同上(3) MOV AX,[100] 直接寻址 20100H(4) MOV AX,VAL 直接寻址 20050H(5) MOV AX,[BX] 寄存器间接寻址 20100H(6) MOV AX,ES:[BX] 直接寻址 21100H(7) MOV AX,[BP] 寄存器间接寻址 20010H(8)MOV AX,[SI] 同上 200A0H(9) MOV AX,[BX+10] 寄存器相对寻址 20110H(10)MOV AX,VAL[BX] 同上 20150H(11) MOV AX,[BX][SI] 基址变址寻址 201A0H(12) MOV AX,VAL[BX][SI] 相对基相变址寻址 201F0H9.(1)的指令: MOV AX, [BX][0CH] MOV ZREO ,AX(2) 的指令: MOV AX,ARRAY[BX] MOV ZREO,AX10. MOV AX,TABLE 是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234HLEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H11. 执行完指令后,(AX)=1E00H12. LEA AX,CSTRINGMOV DL,AXMOV DH,[AX+6]13. 这参考课本P51--P5314.LES BX,[2000]MOV AX,ES:[BX]15.运算结果 SF,ZF,CF,OF各位的值(从左至右依次往下~)(1) 74D4H 0 0 0 0(2) A5C1H 1 0 0 1(3) 4240 H 0 0 1 0(4) 0000 H 0 1 1 016.接上表~(1) 5D14 0 0 0 0(2) A870 1 0 0 1(3) D870 1 0 0 0(4) 34E4 0 0 1 017.(1).MOV AX,Z ;把Z送到AXSUB AX,X ;Z-XADD AX,W ;W+(Z-X)MOV Z,AX ;结果保存在Z中(2). MOV AX,R ;R送到AX中ADD AX,9 ;R+9MOV BX,X ;X送到BX中ADD BX,6 ;X+6ADD AX,BX ;(R+9)+(X+6),结果保存在AX中MOV BX,W ; W送到BX中SUB BX,AX ; W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~ MOV Z,BX ;最终结果送到Z中(3)MOV AX,W ;把W送到AXIMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里MOV BX,Y ;把Y送到BX 里ADD BX,6 ;Y+6IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX里,余数保存在DX里MOV Z,AX ;把商送到Z中,MOV R,DX ;把余数送到R中(4)MOV AX,W ;把W送到AX中SUB AX,X ;W-XCWD ;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保;在DX中MOV BX,5 ;把5送到BX中IDIV BX ;(W-X)/5 被除数为32位,除数为16位商为16位IMUL Y ;上一步结果再乖以Y,积为32位MOV BX,2 ;把2送到BX中IMUL BX ;上一步乘法所得的积再乘以2,各为64位MOV Z,EAX ;把结果中低32位放入Z双字单元中MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中18.指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值MOV AX,1234H 1234H 0 0 0MOV CL,4 1234H 0 0 0ROL AX,CL 2341H 1 0 0DEC AX 2340H 1 0 0MOV CX,4 2340H 1 0 0MUL CX 8918H 0 0 0INT 20H程序结束后,(AX)=8918H (DX)=0000H19.指令执行完后AX的内容执行完后CF ,SF,ZF和OF的值MOV AX,0 0 0010DEC AX FFFFH 0100ADD AX,7FFFH 7FFEH 0000ADD AX,2 8000H 0101NOT AX 7FFFH 0101SUB AX,0FFFFH 8000H 1101ADD AX,8000H 0000H 1011SUB AX,1 FFFFH 1101AND AX,58D1H 58D1H 0000SAL AX,1 B1A2H 0101SAR AX,1 D8D1H 0100NEG AX 272FH 1000ROR AX,1 9397H 100120.(1)MOV AX,DATAXADD DATAY,AX(2)MOV AX,DATAXADD DATAY,AXMOV AX,[DATAX+2]ADD [DATAY+2] ,AX(3)本組指令的作用是:BX <------[DATAX]+[DATAY]+[1](CF的值) 帶進位加法~ (4)MOV AX,DATAXMUL DATAY ;結果的高十六位保存在DX裏,低十六位保存在AX裏(5)MOV AX,DATAXMOV DX,[DATAX+2]MUL DWORD DATAY;;(6)MOV AX,DATAXDIV 17H ;結果商保存在AL中,余數在AH中(7)MOV AX,DATAXCDWDIV DATAY21.NEG DXNEG AXSBB DX,022.MOV AX,A ;把雙字長數的低字放到AX中MOV DX,[A+2] ;把雙字長數的高字放到DX中TEST DX,8000H ;測試雙字長數的符號JZ RIGHT ;如果是非負數,則直接保存NEG DX ;如果是負數,則求補NEG AXSBB DX,0RIGHT: MOV B ,AXMOV [B+2],DX23.每條指令單獨執行完後的結果依次為:(1) 9AH (2)61H (3)0FBH (4)1CH (5)0 (6)0E3H24.執行指令序列後,BX的內容為:0DAH25.(1)把53D乘以2的程序:MOV AX,35H ;53D=35HSHL AX ,1(2)把53除以2 的程序:MOV AX,35HSHR AX,1其他的同理~~26.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D)27.各條指令單獨執行後,DX的值依次為:(1) 5CH (2)17H (3)05C8H (4)72H (5)2017H (6)0CDH (7)0172H (8)05CCH (9)0DCH28.該程序段執行完後,BX寄存器的內容是:C02DH29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:LEA SI,CONAME ;把CONAME中第一个字节的偏移地址送到SI中LEA DI,PRLINE ;把PRLINE中第一个字节的偏移地址送到DI中MOV CX,20 ;把重复次数放到CX里CLD ;让SI DI从低地址指向高地址(即从左到右传送)REP MOVSB ;传送(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:LEA SI ,CONAMELEA DI,PRLINEMOV CX,20STD ;和上面唯一不同的就是这次是从右到左,所以要从高地址指向低地址REP MOVSB(3)把CONAME中的第三和第四個字節裝入AX的程序實現:LEA SI ,[CONAME+3]LODSW(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:LEA DI ,[PRLINE+5]STOSW(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:LEA DI,CONAME ;把CONAME中第一個字符偏移地址放入DI中MOV CX,20 ;把重複次數放到CX中MOV AL,20H ;把空格符的ASCII值放入AL中CLD ;从低到高REPNE SCASB ;比較MOV BH,[DI-1]R ;把檢查到的空格符送到BH中30.MOV CX,12H ;把重複次數放到CX中。

《IBM-PC汇编语言程序设计》(第2版)第3章习题解答及答案

《IBM-PC汇编语言程序设计》(第2版)第3章习题解答及答案

第3章习题答案3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;答案:无。

如:MOV AX,5(2)直接寻址;答案:7237H 如:MOV AX,[7237H](3)使用BX的寄存器寻址;答案:无。

因不涉及内存如:MOV AX,BX(4)使用BX的间接寻址;答案:637DH 如:MOV AX,[BX](5)使用BX的寄存器相对寻址答案:D5B4H 如:MOV AX,[BX+ 7237H](6)基址变址寻址答案:8E18H 如:MOV AX,[BX][SI](7)相对基址变址寻址;答案:无效,溢出如:MOV AX,[BX][SI] + 7237H 3.2 试根据以下要求,写出相应的汇编语言指令:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;答案:ADD DX,BX(2) 用寄存器BX 和SI 的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中;答案:ADD AL,[BX][SI](3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回到存储器中;答案:ADD [BX+0B2H],CX (4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回到该存储单元中;答案:ADD WORD PTR [0524H],2A59H (5)把数0B5H与(AL)相加,并把结果送回AL中。

答案:ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址答案:LEA BX, BLOCKADD BX, 5*2MOV DX, [BX](2) 寄存器相对寻址答案:LEA BX, BLOCKMOV DX, [BX+5*2](3) 基址变址寻址答案:LEA BX, BLOCKMOV SI,5*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56, (20103)=78H,(21200)=2AH,(21201)=4CH, (21202)=B7H, (21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。

IBM-PC汇编语言程序设计课后习题答案第二版doc

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。

IBM-PC汇编语言程序设计课后习题解答

IBM-PC汇编语言程序设计课后习题解答

附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题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+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。

汇编语言程序设计(第二版)课后习题答案

汇编语言程序设计(第二版)课后习题答案

汇编语言程序设计(第二版)课后习题答案第二章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寄存器的内容。

汇编语言程序设计(第二版)课后题答案

汇编语言程序设计(第二版)课后题答案

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,试求出其它每个变量的偏移量。

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大...

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大...

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第六章答案2006-11-04 22:022、答:(1) NAME1 NAMELIST < >(2) MOV AX,DATA ;假设结构变量NAME1定义在数据段DATA中MOV DS,AXMOV ES,AX;MOV AH,10LEA DX,NAME1INT 21H;MOV CL,NAME1.ACTLENMOV CH,0LEA SI,INLEA DI,DISPFILECLDREP MOVSB6、答:SKIPLINES PROC NEARPUSH CXPUSH DXMOV CX,AXNEXT:MOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HLOOP NEXTPOP DXPOP CXRETSKIPLINES ENDP7、答:dseg segmentnum dw 76,69,84,90,73,88,99,63,100,80n dw 10s6 dw 0s7 dw 0s8 dw 0s9 dw 0dseg endscode segmentmain proc farassume cs:code, ds:dseg start:push dssub ax, axpush axmov ax, dsegmov ds, axcall sub1retmain endpsub1 proc nearpush axpush bxpush cxpush simov si, 0mov cx, nnext:mov ax, num[si]mov bx, 10div blmov bl, alcbwsub bx, 6sal bx, 1inc s6[bx]add si,2loop nextpop sipop cxpop bxpop axretsub1 endpend start8、答:data segmentmaxlen db 40n db ?table db 40 dup (?)char db 'a' ; 查找字符’a’evenaddr dw 3 dup (?)data endscode segmentassume cs:code, ds:datamain proc farstart:push dsmov ax, 0push axmov ax, datamov ds, axlea dx, maxlenmov ah, 0ahint 21h ; 从键盘接收字符串mov addr, offset tablemov addr+2, offset nmov addr+4, offset charmov bx, offset addr ; 通过地址表传送变量地址call count ; 计算CHAR的出现次数call display ; 显示retmain endpcount proc near ; count子程序push sipush dipush axpush cxmov si, [bx+2]mov cl, byte ptr[si]mov ch, 0mov si, [bx+4]mov al, byte ptr[si]mov bx, 0again:cmp al, byte ptr[di]jne l1inc bxl1: inc diloop againpop cxpop axpop dipop siretcount endpdisplay proc near ; display子程序call crlf ; 显示回车和换行mov dl, charmov ah, 2int 21hmov dl, 20hmov ah, 2int 21hmov al, bland al, 0fhadd al, 30hcmp al, 3ahjl printadd al, 7print:mov dl, alint 21hcall crlfretdisplay endpcrlf proc near ; crlf子程序mov dl, 0dhmov ah, 2int 21hmov dl, 0ahmov ah, 2int 21hretcrlf endpcode endsend start。

汇编语言程序设计(第二版) 沈美明 温冬婵 编著

汇编语言程序设计(第二版) 沈美明 温冬婵 编著

汇编语言程序设计(第二版)(清华大学IBM-PC 汇编语言程序设计(第二版)沈美明温冬婵编著)第二章1、答:直接由指令指定的I/O端口数为256个。

2、答:3、答:字节单元:(30022H)= AB H,(30024H)= EF H字单元:(30021H)= AB34 H,(30022H)= CDAB H。

4、答:3017:000A的存储单元的物理地址是3017AH,3015:002A的存储单元的物理地址是3017AH,3010:007A的存储单元的物理地址是3017AH。

5、答:该程序的第一个字的物理地址是0AAA40H。

6、答:条件标志OF、SF、ZF、CF的值依次分别为0、0、0、0。

7、答:(1)AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL、SP、BP、DI、SI(注意:学生尽量不要用SP参与加减运算)(2)CX(3)DX、AX、AH、AL(4)CS、DS、ES、SS(5)FLAGS(6)IP(7)SS、SP、BP8、答:可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI、IP、CS、DS、ES、SS。

9、答:唯一正确的是D。

第三章2、答:(1)ADD DX, BX(2)ADD AL, [BX][SI](3)ADD [BX+0B2H], CX(4)ADD [0524H], 2A59H(5)ADD AL, 0B5H3、答:(1)MOV BX, OFFSET BLOCK + 0AHMOV DX, [BX](2)MOV BX, 0AHMOV DX, BLOCK[BX](3)MOV BX, OFFSET BLOCKMOV SI, 0AHMOV DX, [BX][SI]4、答:(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7)65B7H6、答:MOV BX, 2000HLES DI, [BX]MOV AX, ES : [DI]7、答:(1)064DH(2)0691H(3)05ECH9、答:(1)MOV AX, [ BX+0CH ]MOV ZERO, AX(2)MOV AX, ARRAY[BX]MOV ZERO, AX10、答:(1)(AX)= 1234H(2)(AX)= 0032H11、答:(AX)= 1E00H12、答:LEA BX, CSTRINGMOV DL, [BX]MOV DH, [BX+6]13、答:14、答:LES BX, [2000]MOV AX, ES:[BX]16、答:(1)74D4H SF=0 ZF=0 CF=0 OF=0 (2)A5C1H SF=1 ZF=0 CF=0 OF=1 (3)3240H SF=0 ZF=0 CF=1 OF=0 (4)0000H SF=0 ZF=1 CF=1 OF=0(1)0C754H SF=1 ZF=0 CF=1 OF=0 (2)12B0H SF=0 ZF=0 CF=0 OF=0 (3)45B0H SF=0 ZF=0 CF=0 OF=1 (4)9F24H SF=1 ZF=0 CF=0 OF=021、答:(1)MOV AX, ZSUB AX, XADD AX, WMOV Z, AX(2)MOV BX, XADD BX, 6MOV CX, RADD CX, 9MOV AX, WSUB AX, BXSUB AX, CXMOV Z, AX(3)MOV AX, WIMUL XMOV BX, YADD BX, 6IDIV BXMOV Z, AXMOV R, DX22、答:NEG DXNEG AXSBB DX, 016、答:MOV AX, AMOV DX, A+2TEST DX, 8000HJZ STORE ; 为正NEG DXNEG AXSBB DX, 0STORE : MOV B, AXMOV B+2, DX17、答:(1)MOV AL, SSUB AL, 6DASADD AL, VDAAMOV U, ALMOV AL, ZSUB AL, UDASMOV U, ALMOV AL, XADD AL, WDAASUB AL, UDASMOV U, AL23、答:(1)(BX)= 9AH(2)(BX)= 61H(3)(BX)= 0FBH(4)(BX)= 1CH(5)(BX)= 0(6)(BX)= 0E3H26、答:把(DX)(AX)中的双字左移四位(乘以16)。

IBMPC汇编语言程序设计第二版答案

IBMPC汇编语言程序设计第二版答案

IBMPC汇编语言程序设计第二版答案在IBMPC汇编语言程序设计第二版中,你将学习到关于汇编语言的基本概念和技巧,以及如何在IBMPC上进行程序设计。

本文将为你提供该教材的答案,以帮助你更好地理解和掌握相关知识。

第一章:引言本章主要介绍了汇编语言的概念和历史背景,以及为什么学习汇编语言在计算机科学领域中至关重要。

课后习题包括:1. 解释汇编语言的概念和作用。

2. 证明学习汇编语言的重要性。

第二章:基本概念本章讨论了汇编语言的基本概念,包括寄存器、内存、指令、操作数等。

课后习题包括:1. 列出IBMPC的主要寄存器及其作用。

2. 解释内存和指令的概念。

3. 指出指令中的操作数是什么以及如何使用它们。

第三章:汇编语言程序的结构本章介绍了汇编语言程序的结构,包括程序开始和结束的标记、数据段和代码段的定义等。

课后习题包括:1. 解释并举例说明程序开始和结束标记的作用。

2. 编写一个简单的汇编语言程序,包含数据段和代码段的定义。

第四章:数据传送和运算指令本章详细讨论了数据传送和运算指令,并提供了具体的例子和实践习题。

课后习题包括:1. 解释MOV指令的功能和用法。

2. 使用ADD指令完成两个数相加的程序。

第五章:程序控制指令本章讲解了程序控制指令,如条件和无条件转移指令、循环指令等。

课后习题包括:1. 说明条件转移指令如何工作。

2. 使用循环指令编写一个计算阶乘的程序。

第六章:子程序本章介绍了子程序的概念和使用方法,以及如何传递参数和返回值。

课后习题包括:1. 解释子程序的作用和优势。

2. 编写一个带有参数和返回值的子程序。

第七章:栈与堆栈本章详细讨论了栈的概念和操作,以及堆栈的使用方法。

课后习题包括:1. 说明栈和堆栈的区别。

2. 编写一个使用堆栈实现函数调用的程序。

第八章:位操作与逻辑运算本章介绍了位操作和逻辑运算的指令,以及如何使用它们进行位级别的操作。

课后习题包括:1. 解释位操作指令的功能和应用。

《IBM-PC汇编语言程序设计》教案及答案(第二版)

《IBM-PC汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:20XX年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材)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 章基础知识 (6)1.1进位计数制与不同基数的数之间的转换 (6)1.2二进制数和十六进制数的运算 (8)1.3计算机中数和字符的表示 (8)1.4几种基本的逻辑运算 (9)第 2 章80X86计算机组织 (10)2.180X86微处理器 (10)2.2基于微处理器的计算机系统构成 (11)2.3中央处理机 (11)2.4存储器 (13)2.5外部设备 (15)第 3 章80X86的指令系统和寻址方式 (16)3.180X86的寻址方式 (16)3.2程序占有的空间和执行时间 (18)3.380X86的指令系统 (19)第 4 章汇编语言程序格式 (41)4.1汇编程序功能 (41)4.2伪操作 (41)4.3汇编语言程序格式 (46)4.4汇编语言程序的上机过程 (50)第 5 章循环与分支程序设计 (53)5.1循环程序设计 (53)5.2分支程序设计 (54)5.3如何在实模式下发挥80386及其后继机型的优势 (54)第 6 章子程序结构 (56)6.1子程序的设计方法 (56)6.2子程序的嵌套 (58)6.3子程序举例 (58)第7 章高级汇编语言技术 (59)7.1宏汇编 (59)7.2重复汇编 (60)7.3条件汇编 (61)第8 章输入/输出程序设计 (63)8.1I/O设备的数据传送方式 (63)8.2程序直接控制I/O方式 (64)8.3中断传送方式 (64)第9 章BIOS和DOS中断 (68)9.1键盘I/O (69)9.2显示器I/O (71)9.3打印机I/O (72)9.4串行通信口I/O (73)第10 章图形与发声系统的程序设计 (75)10.1显示方式 (75)10.2视频显示存储器 (75)10.3EGA/VGA图形程序设计 (76)10.4通用发声程序 (77)10.5乐曲程序 (79)第11 章磁盘文件存取技术 (80)11.1磁盘的记录方式 (80)11.2文件代号式磁盘存取 (82)11.3字符设备的文件代号式I/O (83)11.4BIOS磁盘存取功能 (83)附录:《IBM—PC汇编语言程序设计》习题参考答案 (85)第一章.习题 (85)第二章.习题 (86)第三章.习题 (88)第四章.习题 (106)第五章.习题 (113)第六章.习题 (136)第七章.习题 (153)第八章.习题 (161)第九章.习题 (168)第十章.习题 (172)第十一章.习题 (186)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

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

IBM-PC汇编语言程序设计(第2版)课后参考答案沈美明 温冬婵

IBM-PC汇编语言程序设计(第2版)课后参考答案沈美明 温冬婵

2.9 请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):
(1) CPU
(M) A.保存当前栈顶地址的寄存器。
(2) 存储器
(C)
B.指示下一条要执行的指令的地址。
(3) 堆栈
(D)
C.存储程序、数据等信息的记忆装置,微机有 RAM 和 ROM 两种。
(4) IP
(B)
D.以后进先出方式工作的存储空间。
1.7 下列各数均为用十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的数或字 符的 ASCII 码时,它们所表示的十进制数及字符是什么?
(1) 4F 答:(1)
(2) (3) (4)
(2) 2B
(3) 73
4FH 表示的十进制数为 79,4FH 表示的字符为 O;
2BH 表示的十进制数为 43,2BH 表示的字符为 +;
1.6 下列各数为十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的带符号数或 无符号数时,它们所表示的十进制数是什么?
(1) D8
(2) FF
答:(1) D8H 表示的带符号数为 -40,D8H 表示的无符号数为 216;
(2) FFH 表示的带符号数为 -1, FFH 表示的无符号数为 255。
(4) 7AB×6F
1.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

清华大学汇编语言(沈美明,温冬婵)课后答案

清华大学汇编语言(沈美明,温冬婵)课后答案

汇编语言程序设计(第二版)(清华大学IBM-PC 汇编语言程序设计(第二版)沈美明温冬婵编著)第二章1、答:直接由指令指定的I/O端口数为256个。

2、答:3、答:字节单元:(30022H)= AB H,(30024H)= EF H字单元:(30021H)= AB34 H,(30022H)= CDAB H。

4、答:3017:000A的存储单元的物理地址是3017AH,3015:002A的存储单元的物理地址是3017AH,3010:007A的存储单元的物理地址是3017AH。

5、答:该程序的第一个字的物理地址是0AAA40H。

6、答:条件标志OF、SF、ZF、CF的值依次分别为0、0、0、0。

7、答:(1)AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL、SP、BP、DI、SI(注意:学生尽量不要用SP参与加减运算)(2)CX(3)DX、AX、AH、AL(4)CS、DS、ES、SS(5)FLAGS(6)IP(7)SS、SP、BP8、答:可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI、IP、CS、DS、ES、SS。

9、答:唯一正确的是D。

.第三章2、答:(1)ADD DX, BX(2)ADD AL, [BX][SI](3)ADD [BX+0B2H], CX(4)ADD [0524H], 2A59H(5)ADD AL, 0B5H3、答:(1)MOV BX, OFFSET BLOCK + 0AHMOV DX, [BX](2)MOV BX, 0AHMOV DX, BLOCK[BX](3)MOV BX, OFFSET BLOCKMOV SI, 0AHMOV DX, [BX][SI]4、答:(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7)65B7H6、答:MOV BX, 2000HLES DI, [BX]MOV AX, ES : [DI]7、答:(1)064DH(2)0691H(3)05ECH9、答:(1)MOV AX, [ BX+0CH ]MOV ZERO, AX(2)MOV AX, ARRAY[BX]MOV ZERO, AX10、答:(1)(AX)= 1234H(2)(AX)= 0032H11、答:(AX)= 1E00H12、答:LEA BX, CSTRINGMOV DL, [BX]MOV DH, [BX+6]13、答:14、答:LES BX, [2000]MOV AX, ES:[BX]16、答:(1)74D4H SF=0 ZF=0 CF=0 OF=0 (2)A5C1H SF=1 ZF=0 CF=0 OF=1 (3)3240H SF=0 ZF=0 CF=1 OF=0 (4)0000H SF=0 ZF=1 CF=1 OF=0 17、答:(1)0C754H SF=1 ZF=0 CF=1 OF=0 (2)12B0H SF=0 ZF=0 CF=0 OF=0 (3)45B0H SF=0 ZF=0 CF=0 OF=1 (4)9F24H SF=1 ZF=0 CF=0 OF=0 21、答:(1)MOV AX, ZSUB AX, XADD AX, WMOV Z, AX(2)MOV BX, XADD BX, 6MOV CX, RADD CX, 9MOV AX, WSUB AX, BXSUB AX, CXMOV Z, AX(3)MOV AX, W IMUL XMOV BX, YADD BX, 6IDIV BXMOV Z, AXMOV R, DX22、答:NEG DXNEG AXSBB DX, 016、答:MOV AX, AMOV DX, A+2 TEST DX, 8000H JZ STORE ; 为正NEG DXNEG AXSBB DX, 0STORE : MOV B, AX MOV B+2, DX17、答:(1)MOV AL, SSUB AL, 6DASADD AL, VDAAMOV U, AL(2)MOV AL, ZSUB AL, UDASMOV U, ALMOV AL, XADD AL, WDAASUB AL, UDASMOV U, AL23、答:(1)(BX)= 9AH (2)(BX)= 61H (3)(BX)= 0FBH (4)(BX)= 1CH (5)(BX)= 0 (6)(BX)= 0E3H 26、答:把(DX)(AX)中的双字左移四位(乘以16)。

IBM-PC汇编语言程序设计答案(第2版)

IBM-PC汇编语言程序设计答案(第2版)
3.3 写出把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方 式: (1) 寄存器间接寻址 (2) 寄存器相对寻址 (3) 基址变址寻址 答:(1) MOV BX, OFFSET BLOCK ADD BX, (6–1)*2
MOV (2) MOV
MOV (3) MOV
2.2 题的信息存放情况 存储器
30020H 30021H 30022H
12H 34H ABH
2.5 如果在一个程序开始执行以前(CS)=0A7F0H,(如 16 进制数的最高位为 字母,则应在其前加一个 0) (IP)=2B40H,试问该程序的第一个字的物理 地址是多少?
30023H 30024H
2.4 在实模式下,段地址和偏移地址为 3017:000A 的存储单元的物理地址是 什么?如果段地址和偏移地址是 3015:002A 和 3010:007A 呢? 答:3017:000A 、3015:002A 和 3010:007A 的存储单元的物理地址都是 3017AH。
000B3H 3CH 000B4H 2AH
1.6 下列各数为十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的带符号数或 无符号数时,它们所表示的十进制数是什么?
(1) D8
(2) FF
答:(1) D8H 表示的带符号数为 -40,D8H 表示的无符号数为 216;
(2) FFH 表示的带符号数为 -1, FFH 表示的无符号数为 255。
附录:《IBM—PC 汇编语言程序设计》习题参考答案
第 一 章. 习 题
1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
(1) 369
(2) 10000

IBM-PC汇编语言 程序设计第2版 答案 甄选

IBM-PC汇编语言 程序设计第2版 答案   甄选

IBM-PC汇编语言程序设计第2版答案(优选.)附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题二三四五六七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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)答案第三章答案1-221.(1)立即寻址没有(2)直接寻址 7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址 0D5F0H(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,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。

(1)MOV AX,1200H 1200H(2) MOV AX,BX 0100H(3) MOV AX,[1200] 4C2AH 注意,是字单元!!(4)MOV AX,[BX] 同上(5)MOV 1100[BX] 4C2AH(6) MOV AX,[BX][SI] 7856H(7) MOV AX,1100[BX][SI] 65B7H5.(1) 7CD9H (2) 1200H (3) 6319H6. MOV BX,2000HLES DI ,[BX]MOV AX, ES:DI7.转向地址OBJ的值分别为:(1)064DH (2)0691H (3)05E0H注意有符号数的符号位8.(1) MOV AX,0ABH 立即数寻址无物理地址(2) MOV AX,BX 寄存器寻址同上(3) MOV AX,[100] 直接寻址 20100H(4) MOV AX,VAL 直接寻址 20050H(5) MOV AX,[BX] 寄存器间接寻址 20100H(6) MOV AX,ES:[BX] 直接寻址 21100H(7) MOV AX,[BP] 寄存器间接寻址 20010H(8)MOV AX,[SI] 同上 200A0H(9) MOV AX,[BX+10] 寄存器相对寻址 20110H(10)MOV AX,VAL[BX] 同上 20150H(11) MOV AX,[BX][SI] 基址变址寻址 201A0H(12) MOV AX,VAL[BX][SI] 相对基相变址寻址 201F0H9.(1)的指令: MOV AX, [BX][0CH] MOV ZREO ,AX(2) 的指令: MOV AX,ARRAY[BX] MOV ZREO,AX10. MOV AX,TABLE 是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234HLEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H11. 执行完指令后,(AX)=1E00H12. LEA AX,CSTRINGMOV DL,AXMOV DH,[AX+6]13. 这参考课本P51--P5314.LES BX,[2000]MOV AX,ES:[BX]15.运算结果 SF,ZF,CF,OF各位的值(从左至右依次往下~)(1) 74D4H 0 0 0 0(2) A5C1H 1 0 0 1(3) 4240 H 0 0 1 0(4) 0000 H 0 1 1 016.接上表~(1) 5D14 0 0 0 0(2) A870 1 0 0 1(3) D870 1 0 0 0(4) 34E4 0 0 1 017.(1).MOV AX,Z ;把Z送到AXSUB AX,X ;Z-XADD AX,W ;W+(Z-X)MOV Z,AX ;结果保存在Z中(2). MOV AX,R ;R送到AX中ADD AX,9 ;R+9MOV BX,X ;X送到BX中ADD BX,6 ;X+6ADD AX,BX ;(R+9)+(X+6),结果保存在AX中MOV BX,W ; W送到BX中SUB BX,AX ; W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~ MOV Z,BX ;最终结果送到Z中(3)MOV AX,W ;把W送到AXIMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里MOV BX,Y ;把Y送到BX 里ADD BX,6 ;Y+6IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX里,余数保存在DX里MOV Z,AX ;把商送到Z中,MOV R,DX ;把余数送到R中(4)MOV AX,W ;把W送到AX中SUB AX,X ;W-XCWD ;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保;在DX中MOV BX,5 ;把5送到BX中IDIV BX ;(W-X)/5 被除数为32位,除数为16位商为16位IMUL Y ;上一步结果再乖以Y,积为32位MOV BX,2 ;把2送到BX中IMUL BX ;上一步乘法所得的积再乘以2,各为64位MOV Z,EAX ;把结果中低32位放入Z双字单元中MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中18.指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值MOV AX,1234H 1234H 0 0 0MOV CL,4 1234H 0 0 0ROL AX,CL 2341H 1 0 0DEC AX 2340H 1 0 0MOV CX,4 2340H 1 0 0MUL CX 8918H 0 0 0INT 20H程序结束后,(AX)=8918H (DX)=0000H19.指令执行完后AX的内容执行完后CF ,SF,ZF和OF的值MOV AX,0 0 0010DEC AX FFFFH 0100ADD AX,7FFFH 7FFEH 0000ADD AX,2 8000H 0101NOT AX 7FFFH 0101SUB AX,0FFFFH 8000H 1101ADD AX,8000H 0000H 1011SUB AX,1 FFFFH 1101AND AX,58D1H 58D1H 0000SAL AX,1 B1A2H 0101SAR AX,1 D8D1H 0100NEG AX 272FH 1000ROR AX,1 9397H 100120.(1)MOV AX,DATAXADD DATAY,AX(2)MOV AX,DATAXADD DATAY,AXMOV AX,[DATAX+2]ADD [DATAY+2] ,AX(3)本組指令的作用是:BX <------[DATAX]+[DATAY]+[1](CF的值) 帶進位加法~ (4)MOV AX,DATAXMUL DATAY ;結果的高十六位保存在DX裏,低十六位保存在AX裏(5)MOV AX,DATAXMOV DX,[DATAX+2]MUL DWORD DATAY;;(6)MOV AX,DATAXDIV 17H ;結果商保存在AL中,余數在AH中(7)MOV AX,DATAXCDWDIV DATAY21.NEG DXNEG AXSBB DX,022.MOV AX,A ;把雙字長數的低字放到AX中MOV DX,[A+2] ;把雙字長數的高字放到DX中TEST DX,8000H ;測試雙字長數的符號JZ RIGHT ;如果是非負數,則直接保存NEG DX ;如果是負數,則求補NEG AXSBB DX,0RIGHT: MOV B ,AXMOV [B+2],DX23.每條指令單獨執行完後的結果依次為:(1) 9AH (2)61H (3)0FBH (4)1CH (5)0 (6)0E3H24.執行指令序列後,BX的內容為:0DAH25.(1)把53D乘以2的程序:MOV AX,35H ;53D=35HSHL AX ,1(2)把53除以2 的程序:MOV AX,35HSHR AX,1其他的同理~~26.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D)27.各條指令單獨執行後,DX的值依次為:(1) 5CH (2)17H (3)05C8H (4)72H (5)2017H (6)0CDH (7)0172H (8)05CCH (9)0DCH28.該程序段執行完後,BX寄存器的內容是:C02DH29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:LEA SI,CONAME ;把CONAME中第一个字节的偏移地址送到SI中LEA DI,PRLINE ;把PRLINE中第一个字节的偏移地址送到DI中MOV CX,20 ;把重复次数放到CX里CLD ;让SI DI从低地址指向高地址(即从左到右传送)REP MOVSB ;传送(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:LEA SI ,CONAMELEA DI,PRLINEMOV CX,20STD ;和上面唯一不同的就是这次是从右到左,所以要从高地址指向低地址REP MOVSB(3)把CONAME中的第三和第四個字節裝入AX的程序實現:LEA SI ,[CONAME+3]LODSW(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:LEA DI ,[PRLINE+5]STOSW(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:LEA DI,CONAME ;把CONAME中第一個字符偏移地址放入DI中MOV CX,20 ;把重複次數放到CX中MOV AL,20H ;把空格符的ASCII值放入AL中CLD ;从低到高REPNE SCASB ;比較MOV BH,[DI-1]R ;把檢查到的空格符送到BH中30.MOV CX,12H ;把重複次數放到CX中。

這裏用十六進制表示MOV SI,0 ;初始化SIMOV AX,26H ;把&字符的ASCII值放入AXCHECK: CMP AX,STRING[SI] ;依次查找INC SILOOPNE CHECK ;找到了就退出MOV AX,20H ;把空格符的ASCII值勤放入AX中MOV STRING[SI-1],AX ;用空格符代替&31。

相关文档
最新文档