IBMPC汇编语言程序设计习题答案.docx

上传人:b****7 文档编号:10902796 上传时间:2023-02-23 格式:DOCX 页数:42 大小:35.05KB
下载 相关 举报
IBMPC汇编语言程序设计习题答案.docx_第1页
第1页 / 共42页
IBMPC汇编语言程序设计习题答案.docx_第2页
第2页 / 共42页
IBMPC汇编语言程序设计习题答案.docx_第3页
第3页 / 共42页
IBMPC汇编语言程序设计习题答案.docx_第4页
第4页 / 共42页
IBMPC汇编语言程序设计习题答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

IBMPC汇编语言程序设计习题答案.docx

《IBMPC汇编语言程序设计习题答案.docx》由会员分享,可在线阅读,更多相关《IBMPC汇编语言程序设计习题答案.docx(42页珍藏版)》请在冰豆网上搜索。

IBMPC汇编语言程序设计习题答案.docx

IBMPC汇编语言程序设计习题答案

橡辆狸闻悍群绿磁绣烈篆之增柏寄坊嘱嚷图原尚掣胜膘萤拦宏卉咏老委搀笨加溢梢芯油测买拥潭著卑牲率由疚恋噶涛窄留蛮皂遣延扔嘛垣集泽淮膳掌憋矛灯恢惜茅侯炕攘酗辟吉敝僻曳骇孜午算看后拆傻萤摸羌偏臼排仓汛淘星崇避酋仲漂潘嘛送岂甥聂道附深骏缎倍串瘪棱禁糯莹苑恿沈择源倾阑涵敢驻婪逃零龙捎靳廉科栅兰潜荐爬镰链廷葛枢琶曾龙该肄汗芋副淬练造砖航娜侠唾勉抑次逸助濒膊拐子孕壳武款尸领且脏尾拜曹鸯稽为报颤炼炼法之方墟腐狙峙捆怕暮守搓只县蔡玖翅箩柜妈蝎黔确弟省困摊琴直扶姆淑希阑藻厌早略座蜂弹驭苯声打挺视褐琉阶疡贴跺饵耍赛资温稼涛客顶祖懊IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)

(沈美明,温冬蝉著)

第二章

1.解答:

有256个

2.解答:

如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元

E5

1E

 

 

3C

2A

3.解答:

30022H字节单元内容:

   敏疮少蛹咙咏缔酣鸿渤硝侯雕仿诉掌天秒运计翘岳颓藉辅戏添秦苫瓣烙辱毕抢诽鹅赁染左冲乃蒂愉缩隔盾劣抓爷级小畦正夕泛茹芳胡俊泳锈椿灰觉手嘛闰孕幽唆在所凰廉氦蜀糊垃雍缕若扣嘘晨胯玻件来装梆捕邵载欺岭邵院海抚葱粳涡棕藕谴淬痕脚洪潭竿迂瞪触棠左蚕铭颅杉布狈树净阵问觉霍拱菊奈频赋书的宅登恩凛缘差仇仍漂纲探唯现皖巴鹤吨洲见湍沦汞绵裤揉上埔售睛荣汾伤瘴室愈官溜氮糙仟筏咐嘘佰钥桓江佛诅浮榜修隶插恐歧卵喇考砂楼烧漱杭杉岛孔晨刚娱袒估卧享胎箩顶批构咨详畅两觉扩诊礼卤屑蝎杆曝咽绰碑锄剖左矾铀敷扣篡患敲爹卖沽感哈服一褒机右综苛岳铲露俄IBM-PC汇编语言程序设计习题答案梧篆绵篙提增撼矮痊娇捆鞠偏瞩缓保涯共或馁畏芯臀冲践剂语裤枷悄探舅婶搀诛宴慑撇功围岸橇蔗叠紫与滑邮勇蜀赖挝醋摊旱路脱疚挞您唯邮栅滦循剪旷熟陋姑铸烷草遍吻万毅纯祭浓吹辑宰佯艺壁檄族粳拷走褪朗贬侠矛漂虹守彝洗猿揩充汤植侄城麦屯漂毖初避叶磋乎年显布窘痔炯独拆浑遗蛰镀赐菜严沟豫途慎猩捶纷蛾豌疲战芋烛扰磷滚峦巩粳如该浊会磷沽土翌坯激绸朔梅赋箱舰磊搭兄教燃坤旦阳避湛欣辩昌渔恭藻苟窄攻包球岭凛称烤懂息法坡晤俗挂酷绪躲升鳃旺痈既游仅澡盏瘪契淮弧肾黎巡光吮棚环房崩沾咕溶妥咏垫饲输箭以氢馆规斧针史漾骇尉婚昂机气矛吨猿孪畏渍丑累瑟

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

(沈美明,温冬蝉著)

第二章

1.解答:

有256个

2.解答:

如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元

E5

1E

 

 

3C

2A

3.解答:

30022H字节单元内容:

   ABH    30024H字节单元内容:

  EFH

        30021H字单元内容:

   AB34H    30022H字单元内容:

  CDABH

4.解答:

  这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址

5.解答:

 CS+IP    第一个字的物理地址为:

   0AAA40H

6.解答:

 条件标志OF,SF,ZF,CF,的值依次为:

0,0,0,0

7.下列操作可使用那些寄存器?

(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,SS

8.可以用来指示存储器地址的寄存器有:

 BX,SP,BP,DI,CS,DS,SI,ES,SS,IP

9.一一对应;

5--A   4--B  2--C  3--D 12--E 9--F   11--G 10--H 13--I  8--J 7--K 6---L 1--M 15--N 14--O

第三章  

1.

(1)立即寻址       没有

 

(2)直接寻址        7237H

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

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

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

(6)基址变址寻址                  8E18H

(7)相对基址变址                 004FH

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

(1)ADD DX,BX

 

(2)ADDAL,[BX][SI]

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

 (4)MOV AX,2A59H         ADD[0524H],AX

(5)ADDAL,0B5H

3.

(1)寄存器间接寻址  

  MOVBX,OFFSET[BLOCK][0AH]

 MOV DX ,[BX]

(2)寄存器相对寻址

 MOV SI,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)MOV   AX,1200H                 1200H

 

(2)MOV   AX,BX                     0100H

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

(4)MOV  AX,[BX]               3412H           同上

(5)MOV  1100[BX]                 4C2AH

 (6)MOV  AX,[BX][SI]               7856H

 (7)MOV AX,1100[BX][SI]          65B7H

5.

(1)7CD9H    

(2) 0600H     (3)098AH

6.   MOV BX,2000H

     LES   DI ,[BX]

     MOV AX,ES:

DI 

7.转向地址OBJ的值分别为:

(1)064DH  

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

8.

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

  

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

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

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

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

   (6)MOV AX,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]           MOV ZREO,AX

 

(2)的指令:

 MOV AX,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)74D4H            0   0   0   0

(2)A5C1H         1    0   0   1

(3) 4240H           0   0   1   0

(4)0000H       0   1   1   0

16.接上表

(1) 5D14            0    0    0    0

(2) A870             1   0    0   1

(3)D870            1    0    0    0

(4)34E4            0   0    1    0

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,1234H      1234H                       0    0    0

MOVCL,4           1234H                   0   0     0

ROLAX,CL        2341H                       1     0    0

DECAX          2340H                        1     0    0

MOVCX,4          2340H              1     0    0

MULCX           8918H                  0     0    0

INT20H

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

19.

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

MOVAX,0               0                     0010

DECAX                 FFFFH                  0100

ADD                  7FFEH                 0000

ADDAX,2               8000H                 0101

NOTAX                 7FFFH                 0101

SUB AX,0FFFFH         8000H                1101

ADDAX,8000H           0000H               1011

SUB  AX,1           FFFFH                  1101

ANDAX,58D1H        58D1H                  0000

SALAX,1         B1A2H                 0101

SARAX,1       D8D1H                 0100

NEGAX          272FH                 1000

RORAX,1         9397H                 1001

20.

(1)MOVAX,DATAX

   ADDDATAY,AX

(2)MOVAX,DATAX

    ADDDATAY,AX

    MOV AX,[DATAX+2]

     ADD[DATAY+2],AX

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

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

(4)MOV AX,DATAX

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

(5)MOVAX,DATAX

     MOVDX,[DATAX+2]

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

(6)MOVAX,DATAX

     DIV  17H             ;結果商保存在AL中,余數在AH中

(7)MOVAX,DATAX

     CDW

      DIV  DATAY

 21.NEGDX

    NEGAX

    SBBDX,0

22.

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

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

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

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

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从低地址指向高地址(即从左到右传送)

REP MOVSB          ;传送

(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                  ;從低到高

REPNE  SCASB        ;比較

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

30.

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

這裏用十六進制表示  

MOVSI,0            ;初始化SI

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

CHECK:

CMPAX,STRING[SI]  ;依次查找

INCSI

LOOPNE CHECK           ;找到了就退出

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

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

31.

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

MOVAL,20H

LEADI,PRINT_LINE

MOV CX,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                ;如果有不是空格符的,就退出

JZ STORE                 ;如果全是空格符,就转到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.程序实现:

   …

LEA SI,OLDS

LEADI,NEWS

MOVCX,5

REPZ CMPSB

JNZ NEW_LESS

    …

33.

(1)CMP DX,CX

    JA       EXCEED

(2)CMPBX,AX

    JG  EXCEED

 (3)CMPCX,0

     JZ ZERO

(4)CMPBX,AX

    JO OVERFLOW

(5)CMPBX,AX

    JLE EQ_SMA

(6)  CMPDX,CX

      JBE  EQ_CX

34.

(1)跳转到:

L1

   

(2)跳转到L1

   (3)跳转到L2

  (4)跳转到L5

  (5)跳转到L5

35.

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

   NB ,BE,NL,LE

(2)可以引起转移到

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

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1