汇编语言课后答案解析.docx

上传人:b****1 文档编号:2993734 上传时间:2023-05-05 格式:DOCX 页数:71 大小:592.79KB
下载 相关 举报
汇编语言课后答案解析.docx_第1页
第1页 / 共71页
汇编语言课后答案解析.docx_第2页
第2页 / 共71页
汇编语言课后答案解析.docx_第3页
第3页 / 共71页
汇编语言课后答案解析.docx_第4页
第4页 / 共71页
汇编语言课后答案解析.docx_第5页
第5页 / 共71页
汇编语言课后答案解析.docx_第6页
第6页 / 共71页
汇编语言课后答案解析.docx_第7页
第7页 / 共71页
汇编语言课后答案解析.docx_第8页
第8页 / 共71页
汇编语言课后答案解析.docx_第9页
第9页 / 共71页
汇编语言课后答案解析.docx_第10页
第10页 / 共71页
汇编语言课后答案解析.docx_第11页
第11页 / 共71页
汇编语言课后答案解析.docx_第12页
第12页 / 共71页
汇编语言课后答案解析.docx_第13页
第13页 / 共71页
汇编语言课后答案解析.docx_第14页
第14页 / 共71页
汇编语言课后答案解析.docx_第15页
第15页 / 共71页
汇编语言课后答案解析.docx_第16页
第16页 / 共71页
汇编语言课后答案解析.docx_第17页
第17页 / 共71页
汇编语言课后答案解析.docx_第18页
第18页 / 共71页
汇编语言课后答案解析.docx_第19页
第19页 / 共71页
汇编语言课后答案解析.docx_第20页
第20页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言课后答案解析.docx

《汇编语言课后答案解析.docx》由会员分享,可在线阅读,更多相关《汇编语言课后答案解析.docx(71页珍藏版)》请在冰点文库上搜索。

汇编语言课后答案解析.docx

汇编语言课后答案解析

 

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

 

第3章答案

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第三章答案1-

1。

.

(1)立即寻址没有

(2)直接寻址7237H

(3)使用BX的寄存器寻址没有

(4)使用BX的间接寻址637DH

(5)使用BX的寄存器相对寻址0D5F0H

(6)基址变址寻址8E18H

(7)相对基址变址004FH

2。

根据下列要求,写出相应的汇编指令。

(1)ADDDX,BX

(2)ADDAL,[BX][SI]

(3)ADD[BX][0B2H],CX

(4)MOVAX,2A59HADD[0524H],AX

(5)ADDAL,0B5H

3。

(1)寄存器间接寻址

MOVBX,OFFSET[BLOCK][0AH]

MOVDX,[BX]

(2)寄存器相对寻址

MOVSI,OAH

MOVDX,[BLOCK][SI]

(3)基址变址寻址

MOVBX,BLOCK

MOVSI,OAH

MOVDX,[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)MOVAX,1200H1200H

(2)MOVAX,BX0100H

(3)MOVAX,[1200]4C2AH注意,是字单元!

(4)MOVAX,[BX]3412H同上

(5)MOV1100[BX]4C2AH

(6)MOVAX,[BX][SI]7856H

(7)MOVAX,1100[BX][SI]65B7H

5。

(1)7CD9H

(2)1200H(3)6319H

6。

MOVBX,2000H

LESDI,[BX]

MOVAX,ES:

DI

7。

转向地址OBJ的值分别为:

(1)064DH

(2)0691H(3)05E0H注意有符号数的符号位~~

8。

(1)MOVAX,0ABH立即数寻址无物理地址

(2)MOVAX,BX寄存器寻址同上

(3)MOVAX,[100]直接寻址20100H

(4)MOVAX,VAL直接寻址20050H

(5)MOVAX,[BX]寄存器间接寻址20100H

(6)MOVAX,ES:

[BX]直接寻址21100H

(7)MOVAX,[BP]寄存器间接寻址20010H

(8)MOVAX,[SI]同上200A0H

(9)MOVAX,[BX+10]寄存器相对寻址20110H

(10)MOVAX,VAL[BX]同上20150H

(11)MOVAX,[BX][SI]基址变址寻址201A0H

(12)MOVAX,VAL[BX][SI]相对基相变址寻址201F0H

9。

(1)的指令:

MOVAX,[BX][0CH]MOVZREO,AX

(2)的指令:

MOVAX,ARRAY[BX]MOVZREO,AX

10。

MOVAX,TABLE是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234H

LEAAX,TABLE是把符号地址TABLE的有效地址(这里是偏移量)送到指定寄存器AX里,指

令执行完后,(AX)=0032H

11。

执行完指令后,(AX)=1E00H

12。

LEAAX,CSTRING

MOVDL,AX

MOVDH,[AX+6]

13。

这个,,图,很麻烦了,所以就不画了~~大家可以看一下课本上P51--P53,很清楚,看完了这道韪也会了~~~

14。

LESBX,[2000]

MOVAX,ES:

[BX]

注意:

一开始我写的是:

MOVAX,ES:

[8000H],后来看到题目里要求写两条指令,所以一条就不行了,就要画蛇添足~~~

15。

运算结果SF,ZF,CF,OF各位的值(从左至右依次往下~)

(1)74D4H0000

(2)A5C1H1001

(3)4240H0010

(4)0000H0110

16。

接上表~

(1)5D140000

(2)A8701001

(3)D8701000

(4)34E40010

17。

(1).MOVAX,Z;把Z送到AX

SUBAX,X;Z-X

ADDAX,W;W+(Z-X)

MOVZ,AX;结果保存在Z中

(2).MOVAX,R;R送到AX中

ADDAX,9;R+9

MOVBX,X;X送到BX中

ADDBX,6;X+6

ADDAX,BX;(R+9)+(X+6),结果保存在AX中

MOVBX,W;W送到BX中

SUBBX,AX;W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~

MOVZ,BX;最终结果送到Z中

(3)

MOVAX,W;把W送到AX

IMULX;W*X注意:

低十六位保存在AX里,高十六位保存在DX里

MOVBX,Y;把Y送到BX里

ADDBX,6;Y+6

IDIVBX;(W*X)/(Y+6)注意:

商保存在AX里,余数保存在DX里

MOVZ,AX;把商送到Z中,

MOVR,DX;把余数送到R中

(4)

MOVAX,W;把W送到AX中

SUBAX,X;W-X

CWD;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保

;在DX中

MOVBX,5;把5送到BX中

IDIVBX;(W-X)/5被除数为32位,除数为16位商为16位

IMULY;上一步结果再乖以Y,积为32位

MOVBX,2;把2送到BX中

IMULBX;上一步乘法所得的积再乘以2,各为64位

MOVZ,EAX;把结果中低32位放入Z双字单元中

MOV[Z+4],EDX;把结果中高32位放入Z+4双字单元中

18。

指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值

MOVAX,1234H1234H000

MOVCL,41234H000

ROLAX,CL2341H100

DECAX2340H100

MOVCX,42340H100

MULCX8918H000

INT20H

程序结束后,(AX)=8918H(DX)=0000H

19。

指令执行完后AX的内容执行完后CF,SF,ZF和OF的值

MOVAX,000010

DECAXFFFFH0100

ADDAX,7FFFH7FFEH0000

ADDAX,28000H0101

NOTAX7FFFH0101

SUBAX,0FFFFH8000H1101

ADDAX,8000H0000H1011

SUBAX,1FFFFH1101

ANDAX,58D1H58D1H0000

SALAX,1B1A2H0101

SARAX,1D8D1H0100

NEGAX272FH1000

RORAX,19397H1001

20。

(1)MOVAX,DATAX

ADDDATAY,AX

(2)MOVAX,DATAX

ADDDATAY,AX

MOVAX,[DATAX+2]

ADD[DATAY+2],AX

(3)本組指令的作用是:

BX<------[DATAX]+[DATAY]+[1](CF的值)帶進位加法~

(4)MOVAX,DATAX

MULDATAY;結果的高十六位保存在DX裏,低十六位保存在AX裏

(5)MOVAX,DATAX

MOVDX,[DATAX+2]

MULDWORDDATAY;結果的高三十二位保存在EDX裏,低三十二位保存在EAX裏

;這裏所用的DWORD為一屬性操作符,在第四章會學到~~

(6)MOVAX,DATAX

DIV17H;結果商保存在AL中,余數在AH中

(7)MOVAX,DATAX

CDW

DIVDATAY

21。

NEGDX

NEGAX

SBBDX,0

22。

MOVAX,A;把雙字長數的低字放到AX中

MOVDX,[A+2];把雙字長數的高字放到DX中

TESTDX,8000H;測試雙字長數的符號

JZRIGHT;如果是非負數,則直接保存

NEGDX;如果是負數,則求補

NEGAX

SBBDX,0

RIGHT:

MOVB,AX

MOV[B+2],DX

 

23。

每條指令單獨執行完後的結果依次為:

(1)9AH

(2)61H(3)0FBH(4)1CH(5)0(6)0E3H

24。

執行指令序列後,BX的內容為:

0DAH

25。

(1)把53D乘以2的程序:

MOVAX,35H;53D=35H

SHLAX,1

(2)把53除以2的程序:

MOVAX,35H

SHRAX,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)0DCH

28。

該程序段執行完後,BX寄存器的內容是:

C02DH

29。

(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:

LEASI,CONAME;把CONAME中第一个字节的偏移地址送到SI中

LEADI,PRLINE;把PRLINE中第一个字节的偏移地址送到DI中

MOVCX,20;把重复次数放到CX里

CLD;让SIDI从低地址指向高地址(即从左到右传送)

REPMOVSB;传送

(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:

LEASI,CONAME

LEADI,PRLINE

MOVCX,20

STD;和上面唯一不同的就是这次是从右到左,所以要从高地址批向低地址

REPMOVSB

(3)把CONAME中的第三和第四個字節裝入AX的程序實現:

LEASI,[CONAME+3]

LODSW

(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:

LEADI,[PRLINE+5]

STOSW

(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:

LEADI,CONAME;把CONAME中第一個字符偏移地址放入DI中

MOVCX,20;把重複次數放到CX中

MOVAL,20H;把空格符的ASCII值放入AL中

CLD;從低到高

REPNESCASB;比較

MOVBH,[DI-1]R;把檢查到的空格符送到BH中

30。

MOVCX,12H;把重複次數放到CX中。

這裏用十六進制表示

MOVSI,0;初始化SI

MOVAX,26H;把&字符的ASCII值放入AX

CHECK:

CMPAX,STRING[SI];依次查找

INCSI

LOOPNECHECK;找到了就退出

MOVAX,20H;把空格符的ASCII值勤放入AX中

MOVSTRING[SI-1],AX;用空格符代替&

31。

(1)用空格符清除PRINT_LINE域的程序实现:

MOVAL,20H

LEADI,PRINT_LINE

MOVCX,132

CLD

REPSTOSB

(2)在STUDENT_ADDR中查找第一个’_‘的程序实现:

MOVAX,2DH;把“—”的ASCII值放入AX

MOVSI,0;初始化SI

MOVCX,9;把重複次數放入CX中

;依次檢查STUDENT-ADDR中的字符是否為"_",找到第一个停下来

CHECK:

CMPAX,STUDENT_ADDR[SI];

INCSI

LOOPNZCHECK

(3)在STUDENT_ADDR中查找最后一个”_“的程序实现:

;和第二題不同的就是這次是從右到左查詢,所以SI的初始化為9

MOVAX,2DH

MOVSI,9

MOVCX,9

CHECK:

CMPAX,STUDENT_ADDR[SI]

DECSI

LOOPNZCHECK

(4)程序實現:

MOVAL,2OH;把空格符的ASCII值放入AL中

LEADI,STUDENT_NAME;把STUDENT_NAME中第一个字符偏移地址放到DI中

MOVCX,30;把重复次数放到CX中

CLD;让DI从低位移到高位

REPZSCASB;如果有不是空格符的,就退出

JZSTORE;如果全是空格符,就转到STORE中

;用*代替空格

STORE:

MOVAL2AH

MOVCX,30

STD;注意,这里是把前面从低到高移动的DI再从高到低移上去~~

REPSTOSB

(5)程序实现:

;把STUDENT_NAME移到PRINT_LINE的前30个字节中

LEASI,STUDENT_NAME

LEADI,PRINT_LINE

MOVCX,30

CLD

REPMOVSB

;把STUDENT_ADDR移到PRINT_LINE的后9个字节中

LEASI,[STUDENT_ADDR+9]

LEADI,[PRINT_LINE+132]

MOVCX,9

STD

REPMOVSB

32。

程序实现:

LEASI,OLDS

LEADI,NEWS

MOVCX,5

REPZCMPSB

JNZNEW_LESS

33。

(1)CMPDX,CX

JAEXCEED

(2)CMPBX,AX

JGEXCEED

(3)CMPCX,0

JZZERO

(4)CMPBX,AX

JOOVERFLOW

(5)CMPBX,AX

JLEEQ_SMA

(6)CMPDX,CX

JBEEQ_CX

34。

(1)跳转到:

L1

(2)跳转到L1

(3)跳转到L2

(4)跳转到L5

(5)跳转到L5

35。

(1)可以引起转移到L1的指令有:

NB,BE,NL,LE

(2)可以引起转移到L1的指令有:

同上

(3)可以引起转移到L1的指令有:

B,BE,L,LE

(4)可以引起转移到L1的指令有:

NB,NBE,NL,NLE

(5)可以引起转移到L1的指令有:

同上

(6)可以引起转移到L1的指令有:

同(3)

(7)可以引起转移到L1的指令有:

同上

36。

37。

程序流程图就不画了,呵呵,程序如下~~

MOVAL,STAUS[SI];把要测试的字节放到AL中

ANDAL,2AH;把第一,三,五位为一其他位为0的数--2AH,与这个字节比较,结果

;放到AL中

JZROUTINE_4;如果结果为0,则三位都为0

XORAL,2AH;前面相与的结果再与2AH异或

JZROUTINE_1;如果结果为0,则三位都为1

BSFBL,AL;

BSRBL,AL

CMPBL,CL

;如果向前和向后测试后,第一个1的位置相同,说明只有一个1,则异或运算前有AL中有两个1

JEROUTINE_2

ROUTINE_1

注:

本题还有其他解法,请大家自己试试~~

38。

(1)当括号内是:

LOOP时,循环四次,程序结束后

(AX)=05(BX)=16(CX)=0(DX)=0

(2)当括号内是:

LOOPE时,不循环,程序结束后

(AX)=02(BX)=04(CX)=03(DX)=02

(3)当括号内是:

LOOPNE时:

循环三次,程序结束后

(AX)=04(BX)=11(CX)=01(DX)=0

 

类别:

ibm-pc汇编语言程序设计(第二版)课后习题答案|评论(7)|浏览(5855)IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第三章答案39--522006-11-0223:

02

39。

图,就不画了,呵呵~~自己看一下课本,P101~~

40.。

(1)00003100H

(2)5100H(3)7100H

41。

(1)目的地址:

2004H内容依次为:

56HF4H23H98H

(2)目的地址:

384CH内容依次为:

91H34HF2H01H

(3)目的地址:

寄存器,无物理地址~内容依次为:

92H6DHA2H4CH

42。

 

(1)PUSHAX

  (SP)<------(SP)-2

(SP+1)<-----(AH)(SP)<------(AL)

(2)POPESI

(ESI)<-------((ESP)+3,(ESP)+2,(ESP)+1,(ESP))

(ESP)<-------(ESP)+4

(3)PUSH[BX]

 (SP)<------(SP)-2

(SP+1)<-----([BX+1])(SP)<------([BX])

(4)PUSHAD

(ESP)<-------(EAX)

(ESP-4)<-------(ECX)

(ESP-8)<-------(EDX)

(ESP-12)<-------(EBX)

(ESP-16)<-------(ESP);这里指的是指令执行前的ESP

(ESP-20)<-------(EBP)

(ESP-24)<-------(ESI)

(ESP-28)<-------(EDI)

(ESP)<-------(ESP)-32

(5)POPDS

(DS)<------((SP)+1,(SP))

(SP)<------(SP)+2

(6)PUSH4

(SP)<-------(SP)-2

(SP+1)<-----0

(SP)<------4

43。

(1)2CEFF93H

(2)24B76A0H

(3)9090804H(4)6F13ADH

44。

(1)0FFFFFFFCH

(2)0FFFFFFF8H

(3)00000007H(4)00000099H

45。

(EAX)=0(EBX)=25d

46。

(AX)=3d(DX)=7d

47。

ADDECX,EDX

ADDECX,ESI

MOVEDI,ECX

48。

IMULBX,DX,100H执行的操作是:

(BX)<-------(DX)*100H

49。

程序实现:

MOVAL,BL

CBW

IDIVCL

IMUL2

MOVDX,AX

50。

JMPDI是直接跳转,执行的操作是:

(IP)<-----(IP)+(DI)

JMP[DI]是间接跳转,执行的操作是:

(IP)<----(IP)+([DI])跳转到DI中所指向的内存单元中的指令地址~

51。

假设数组名为NUMBERS,程序如下~

MOVBX,0;后面用到~

MOVCX,100H;把循环次数放入CX

MOVAL,42H

MOVSI,0;初始化SI

;CHECK用来实现查找功能~

CHECK:

CMPAL,NUMBERS[SI]

INCSI

JBSTORE1;大于42H的数的个数存入UP

JASTORE2;小于42H的的数的个数存入DOWN中~

LOOPCHECK;相等继续循环~

STORE1INCBL;找到一个大于42的数,BL值增加1~

MOVUP,BL

LOOPCHECK

STORE2INCBH

MOVDOWN,BH

LOOPCHECK

52。

图,也不用画了~~呵呵~好了,本章结束

 

--------------------------------

第4章答案

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第四章答案2006-11-0421:

591。

指令下列指令的错误

(1)MOVAH,BX源操作数与目的操作数长度不相同~

(2)MOV[BX],[SI]这是两个内存单元在传递数据,而这在汇编语言中是不允许的~~~

(3)MOVAX,[SI][DI]不能用两个变址连用,其中一个应为基址~

(4)MOVMYDAT[BX][SI],ES:

AX同

(2)

(5)MOVBYTEPTR[BX],1000必须有一个为寄存器

(6)MOVBX,OFFSETMYDAT[SI]OFFSET不能与复杂操作数相连~

(7)MOVCS,AX不能对CS赋值~

(8)MOVECX,AX操作数类型不同~

2。

(1)合法

(2)非法(3)非法(4)非法

3。

(1)非法,操作数类型不同

(2)合法

(3)非法,不允许两个内存单元直接传递数据,你把人家CPU放哪了?

~~~呵~

(4)合法~

(5)合法~

(6)合法

(7)非法~,必须有一个寄存器~~把CPU放哪了?

~~

(8)非法,两个内存单元地址相加没有意义~

(9)合法

(10)非法,同(3)

4。

(1)两内存单元传递数据

(2)操作数类型不同

(3)跳转指令只能跳转到符号地址

(4)转移指令后不能为变量,只能为标号

(5)格式不对,应为NEARPTR。

5。

图,就不画了~~

6。

(1)DW5150H

(2)MOVAX,5150H

MOVADDRESS,AX

等,写出几个就可以~~

7。

DATASGSEGMENT

FLD1BDB'personalcomputer'

FLD2BDB10DUP(32)

FLD3BDB20H

FLD4BDB01011001B

FLD5BDB'32654'

FLD6BDB10DUP(0)

FLD7BDB'PART1',DUP20(?

),'PART2',DUP50(?

),'PART3',DUP14(?

FLD1WDW0FFF0H

FLD2WDW01011001B

FLD3WDWFLD7B

FLD4WDW5,6,7,8,9

FLD5WDW5DUP(0)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2