微机课后答案-4

上传人:wm****3 文档编号:51936716 上传时间:2018-08-17 格式:PPT 页数:32 大小:116.50KB
返回 下载 相关 举报
微机课后答案-4_第1页
第1页 / 共32页
微机课后答案-4_第2页
第2页 / 共32页
微机课后答案-4_第3页
第3页 / 共32页
微机课后答案-4_第4页
第4页 / 共32页
微机课后答案-4_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《微机课后答案-4》由会员分享,可在线阅读,更多相关《微机课后答案-4(32页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计 习题解答请打开书P176习题4.1 画出下列语句的数据在存储器中的存储情况: ARRAYB DB 63,63H,ABCD,3 DUP(?),2 DUP(1,3) ARRAYW DW 1234H,5,AB,CD,?,2 DUP(1,3)3FH 63H 41H 42H 43H 44H XX XX XX 01H 03H 01H 03H34H 12H 05H 00H 42H 41H 44H 43H XX XX 01H 00H 03H 00H 01H 00H 03H 00H习题4.2 程序中数据定义如下: DATA1 DW ? DATA2 DB 32 DUP(?) DATA3

2、DD ? DLENGTH EQU $-DATA1 此时DLENGTH的值是多少? 解答: DLENGTH=2(字)+32+4(双字)=38习题4.3 程序中数据定义如下: ARRAY DB ABCDEF RESULT DB ? TABLE DW 20 DUP(?) 则执行指令 MOV AX,TYPE RESULT后,AX=1 MOV BX, TYPE TABLE后,BX= 2 MOV CX, LENGTH TABLE后,CX=20 MOV DX, LENGTH ARRAY后,DX=1 MOV SI ,SIZE TABLE后,SI=220=40MOV DI ,SIZE ARRAY后,DI=1习题

3、4.4 指令AND AX,7315H AND 0FFH中,两个 AND有什么差别?这两个AND操作分别在什么 时候执行? 解答: (1)指令AND AX,7315H AND 0FFH中的第 一个AND是指令系统中的逻辑“与”指令,而第 二个AND是表达式中的表示逻辑“与”关系的。 (2)指令AND AX,7315H AND 0FFH中的第 一个AND是在CPU执行指令操作时才会执行。 而第二个AND是在汇编时就会将7315H和 0FFH 作逻辑“与”运算,得到结果0015H。然 后执行第一个AND指令,完成AX的内容与 0015H的逻辑“与”运算。习题4.5 设BX=1034H,则执行下列指令

4、: MOV AX,BX AND 0FFH MOV CX,BX EQ 1234H 后,AX和CX各多少?若BX=1234H,则结果 如何? 解答(1) BX AND 0FFH=0034H(2) 0034H AX=0034H(3) BX EQ 1234H= 0000H(4) 0000H CX=0000H 结果: AX=0034H; CX=0000H若BX=1234H,则结果:AX=0034H; CX=FFFFH习题4.6 设已知语句为: ORG 0024H DATA1 DW 4,12H,$+4(0028H +04H=002CH) 则执行指令MOV AX,DATA1+4后AX的值是多少?解答: (1

5、)DATA1+4=0024H+04H=0028H (2)0028H=002CH AX= 002CH0024H 04H 0025H 00H 0026H 12H 0027H 00H 0028H 2CH 0029H 00H习题4.7 已知数据定义语句为: BUFFER DB 16 DUP(0,2 DUP(1) 则其中字数据单元内容为0100H的单元数是多少?解答:字数据单元内容 为0100H的单元数是16个00H 01H 01H 00H 01H 01H 00H 01H 01H 00H 01H 01H16 DUP 16组16组习题4.8 要在以DA1为首地址的数据区中依次存放下列 数据; A,B,0,

6、0,C,D, 0,0 请分别用DB,DW和DD语句实现。解答: (1) DA1 DB A,B,0,0,C,D, 0,0 (2) DA1 DW BA,0, DC, 0 (3)DA1 DD BA, DC习题4.9 试按下列要求在数据段中依次书写各数据定义语句 : (1)以DA1为首字节的连续存储单元中存放20H个重 复的数据序列:2,3,10个4,一个7。 (2)DA2为字符串变量,用字变量(DW)设置一字 符串;STUDENTS(按次顺序存放在各单元中) 。 (3)用等值语句给符号COUNT赋值以DA1为首地址 的数据区共占有的字节数,此等值语句必须放在最 后一语句。 解答: (1)DA1 DB

7、 20H DUP(2,3,10 DUP(4),7) (2)DA2 DW TS, DU,NE,ST, (3) COUNT EQU DA2- DA1习题4.10 下面程序段是实现从键盘输入十个一位10进制数后 累加,最后累加和以非压缩BCD码形式存放在AH (高位)和AL (低位)中。试把程序段中所空缺 的指令填上。 XOR BX ,BX ;BX清零 MOV CX,10 ; 传送数据长度 LOP:MOV AH,01H;中断INT 21H的01H号调用 INT 21H ;中断调用P172, 键入值送入AL中 MOV AH,BH ;将BH的内容传AH ADD AL,BL ;BL与AL的值相加,结果在A

8、L中 AAA ;非压缩BCD码加法调整 MOV BX,AX ;累加结果送BX LOOP LOP ;CX-1CX,判断CX0,则转习题4.11 下面程序段的功能是把DA1数据区的0-9转换为对应的 ASC码.DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT = ASCI-DA1 LEA SI,DA1 ;送数组DA1的首地址偏移量到SI LEA DI, ASCI ;送数组ASCI的首地址偏移量到DI MOV CX, CUNT;送数组DA1的长度 LOP1:MOV AL,SI ;取数 ADD AL,30H;或者

9、OR AL,30H;加30H变成ASC码 MOV DI,AL ;转换后存入数组ASCI INC SI ;源数据地址加1 INC DI ;目的数据地址加1 LOOP LOP1 ;CX-1CX,判断CX0,则转习题4.12BUFF DB ABD$QC%$A.XYZ ;定义数组BUFF CONT DB EQU $-BUFF ;定义长度 CLD ;方向标志DF=0串操作增量 LEA DI,BUFF ;送数组BUFF的首地址偏移量到DI MOV CX,CONT ; 送数组BUFF的长度到CX MOV AL,$ ; 送$的ASC码到AL XOR DX,DX ;DX清零 NEXT:REPNZ SCASB ;

10、P102,串扫描AL-ES:DI,若CX0且ZF=0则重复执行;若CX=0或ZF=1,退出重复,停止串操作 CMP CX,0 ;CX-0,CX内容与0比较 JZ K1 ;P111,等于/为零,则转移到K1 INC DX ;DX加1 JMP NEXT ;转NEXT K1: 上述程序运行后,DX中的值表示的意义是什么? 答:上述程序运行后, DX中的值表示的是字符串中符号$ 的个数习题4.13 设A,B是长度为10的字节数组,用串操作指令编写程序 实现AB两数组内容的相互交换.试完善程序. DATA SEGMENT A DB 1,2,3,4,5,6,7,8,9,0AH ORG 0010H B DB

11、 0AH,9,8,7,6,5,4,3,2,1 DATA ENDS LEA SI,A LEA DI,B MOV CX,10LOP:LODSB XCHG AL,DI XCHG SI,DI DEC DI STOSB XCHG SI,DI INC DI LOOP LOP习题4.14现有一子程序: SUB1:PROC TEST AL,80H(1000 0000B);AL的值与80H相“与”,判断正负 JE PLUS ;如果AL的首位为0(即为正),则转移到PLUS;如果AL为负,则顺序执行 TEST BL,80H ; 判断BL的值的正负 JNE EXITO ;如果BL的首位为1(为负),则转移到EXIT

12、O;如果BL为正,则顺序执行 JMP XCHANGE;转移到XCHANGE PLUS:TEST BL,80H ;判断BL的值的正负 JE EXITO ;如果BL的首位为0(即为正),则转移到EXITO;如果BL为负,时顺序执行 XCHANGE:XCHG AL,BL ;AL与BL交换 EXITO:RET ;返回主程序 SUB1ENDP 试回答(1)子程序的功能是什么? (2)如调用前AL=9AH,BL=77H,那么返回主程序时AL=?;BL=? 解答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不 变。 (2) AL中的数据的最高位为1,BL中的数据的最高位为0,即

13、两个数为异号,所以 要交换AL和BL中的内容,即AL=77H,BL=9AH。 习题4.15 编写一程序段,将AL中的第7和第0位,第6和第1位,第5 和第2位,第4和第3位互换.MOV CX,8; MOV AH,0; K1: SHR AL,1; P99RCL AH,1; P100 DEC CX; JNZ K1; MOV AL,AH 习题4.16 试编写一程序段,在CHAR为首的26个单元中依 次存放字母A- Z.CHAR DB 26 DUP (?) START: LEA BX, CHAR;MOV AL, AMOV CX, 26 LOP1: MOV BX , ALINC ALINC BXLOOP

14、 LOP1HLT习题4.17 设在数据段中有X,Y两个变量(字节单元),试编写程序 段计算(只写有关功能的指令).X 当X0时 Y= X 当X 0时X DB XY DB YMOV AL,XCMP AL,0JGE DONENEG AL DONE: MOV Y,AL习题4.18 编写程序段计算SUM=a1+ a2 + .+ a20,已知a1- a20 依次存放在以BUF为首址的数据区,每个数据占两 个字节,和数SUM也为两个字节.(要求用循环结构 编写,循环控制采用计数控制).此题勿需书写源程 序格式,只需要把题中要求的有关指令序列书写出 来.MOV AX,0;MOV BX,OFFSET BUF;MOV CX,20; LOP:ADD AX,BX;INC BX;INC BX;LOOP LOP;MOV SUM,AX;习题4.19 编写一个完整的源程序,将BUF字节单元存放的两位 BCD码,转换成2个字节的ASC码,并分别存放在ASC 和ASC+1字节单元中. 例如(BUF字节单元)=58H,那么(ASC字节单元)=35H, (ASC+1字节单元)=38HDATA SEGMENTBCD DB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号