




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章汇编语言程序设计
习题解答
请打开书P176习题4.1画出下列语句的数据在存储器中的存储情况:ARRAYBDB63,63H,’ABCD’,3DUP(?),2DUP(1,3)ARRAYWDW1234H,5,’AB’,’CD’,?,2DUP(1,3)3FH63H41H42H43H44HXXXXXX01H03H01H03H34H12H05H00H42H41H44H43HXXXX01H00H03H00H01H00H03H00H习题4.2程序中数据定义如下: DATA1DW? DATA2DB32DUP(?) DATA3DD? DLENGTHEQU$-DATA1此时DLENGTH的值是多少?解答:DLENGTH=2(字)+32+4(双字)=38习题4.3程序中数据定义如下: ARRAYDB‘ABCDEF’ RESULTDB? TABLEDW20DUP(?)则执行指令 MOVAX,TYPERESULT后,AX=1 MOVBX,TYPETABLE后,BX=2 MOVCX,LENGTHTABLE后,CX=20 MOVDX,LENGTHARRAY后,DX=1 MOVSI,SIZETABLE后,SI=2×20=40 MOVDI,SIZEARRAY后,DI=1习题4.4指令ANDAX,7315HAND0FFH中,两个AND有什么差别?这两个AND操作分别在什么时候执行?解答:(1)指令ANDAX,7315HAND0FFH中的第一个AND是指令系统中的逻辑“与”指令,而第二个AND是表达式中的表示逻辑“与”关系的。(2)指令ANDAX,7315HAND0FFH中的第一个AND是在CPU执行指令操作时才会执行。而第二个AND是在汇编时就会将7315H和0FFH作逻辑“与”运算,得到结果0015H。然后执行第一个AND指令,完成AX的内容与0015H的逻辑“与”运算。习题4.5设BX=1034H,则执行下列指令: MOVAX,BXAND0FFH MOVCX,BXEQ1234H 后,AX和CX各多少?若BX=1234H,则结果如何?解答(1)BXAND0FFH=0034H (2)0034H→AX=0034H (3)BXEQ1234H=0000H (4)0000H→CX=0000H结果:AX=0034H;CX=0000H
若BX=1234H,则结果:AX=0034H;CX=FFFFH习题4.6设已知语句为: ORG0024H DATA1DW4,12H,$+4(0028H+04H=002CH)则执行指令MOVAX,DATA1+4后AX的值是多少?解答:(1)DATA1+4=0024H+04H=0028H(2)[0028H]=002CH→AX=002CH0024H04H0025H00H0026H12H0027H00H0028H2CH0029H00H习题4.7已知数据定义语句为: BUFFERDB16DUP(0,2DUP(1))则其中字数据单元内容为0100H的单元数是多少?解答:字数据单元内容为0100H的单元数是16个00H01H01H00H01H01H…00H01H01H00H01H01H16DUP16组16组习题4.8要在以DA1为首地址的数据区中依次存放下列数据;‘A’,‘B’,0,0,’C’,’D’,0,0请分别用DB,DW和DD语句实现。解答:(1)DA1DB‘A’,‘B’,0,0,’C’,’D’,0,0(2)DA1DW‘BA’,0,’DC’,0(3)DA1DD‘BA’,’DC’习题4.9试按下列要求在数据段中依次书写各数据定义语句:(1)以DA1为首字节的连续存储单元中存放20H个重复的数据序列:2,3,10个4,一个7。(2)DA2为字符串变量,用字变量(DW)设置一字符串;‘STUDENTS’(按次顺序存放在各单元中)。(3)用等值语句给符号COUNT赋值以DA1为首地址的数据区共占有的字节数,此等值语句必须放在最后一语句。解答:(1)DA1DB20HDUP(2,3,10DUP(4),7)(2)DA2DW‘TS’,‘DU’,‘NE’,’ST’,(3)COUNTEQUDA2-DA1习题4.10下面程序段是实现从键盘输入十个一位10进制数后累加,最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。 XORBX,BX;BX清零
MOVCX,10
;传送数据长度LOP:MOVAH,01H;中断INT21H的01H号调用 INT21H;中断调用P172,键入值送入AL中 MOVAH,BH;将BH的内容传AH ADDAL,BL;BL与AL的值相加,结果在AL中
AAA
;非压缩BCD码加法调整 MOVBX,AX;累加结果送BX LOOPLOP;CX-1→CX,判断CX≠0,则转习题4.11下面程序段的功能是把DA1数据区的0-9转换为对应的ASCⅡ码.
DA1DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
ASCIDB10DUP(?) CUNT=ASCI-DA1 LEASI,DA1;送数组DA1的首地址偏移量到SI LEADI,ASCI;送数组ASCI的首地址偏移量到DI
MOVCX,CUNT;送数组DA1的长度LOP1: MOVAL,[SI];取数
ADDAL,30H;或者ORAL,30H;加30H变成ASCⅡ码 MOV[DI],AL;转换后存入数组ASCI INCSI;源数据地址加1 INCDI;目的数据地址加1 LOOPLOP1;CX-1→CX,判断CX≠0,则转习题4.12
BUFFDB‘ABD$QC%$A….XYZ’;定义数组BUFF CONTDBEQU$-BUFF;定义长度 … CLD;方向标志DF=0串操作增量 LEADI,BUFF;送数组BUFF的首地址偏移量到DI MOVCX,CONT;送数组BUFF的长度到CX MOVAL,’$’;送$的ASCⅡ码到AL XORDX,DX;DX清零NEXT:REPNZSCASB;P102,串扫描AL-[ES:DI],若CX≠0且ZF=0则重复执行;若CX=0或ZF=1,退出重复,停止串操作 CMPCX,0;CX-0,CX内容与0比较 JZK1;P111,等于/为零,则转移到K1 INCDX;DX加1 JMPNEXT;转NEXTK1: … 上述程序运行后,DX中的值表示的意义是什么?答:上述程序运行后,DX中的值表示的是字符串中符号’$’的个数习题4.13设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换.试完善程序.DATASEGMENT ADB1,2,3,4,5,6,7,8,9,0AH ORG0010H BDB0AH,9,8,7,6,5,4,3,2,1DATAENDS … LEASI,A LEADI,B MOVCX,10LOP: LODSB XCHGAL,[DI]
XCHGSI,DI DECDI STOSB
XCHGSI,DI INCDI LOOPLOP 习题4.14现有一子程序:SUB1: PROC TESTAL,80H(10000000B);AL的值与80H相“与”,判断正负 JEPLUS;如果AL的首位为0(即为正),则转移到PLUS;如果AL为负,则顺序执行 TESTBL,80H;判断BL的值的正负 JNEEXITO;如果BL的首位为1(为负),则转移到EXITO;如果BL为正,则顺序执行 JMPXCHANGE;转移到XCHANGEPLUS: TESTBL,80H;判断BL的值的正负 JEEXITO;如果BL的首位为0(即为正),则转移到EXITO;如果BL为负,时顺序执行XCHANGE: XCHGAL,BL;AL与BL交换EXITO: RET;返回主程序SUB1 ENDP试回答(1)子程序的功能是什么? (2)如调用前AL=9AH,BL=77H,那么返回主程序时AL=?;BL=?解答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。
(2)AL中的数据的最高位为1,BL中的数据的最高位为0,即两个数为异号,所以要交换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;
P99
RCL
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,
‘
A’
MOV
CX,
26
LOP1:
MOV
[BX]
,
AL
INC
AL
INC
BX
LOOP
LOP1
HLT习题4.17设在数据段中有X,Y两个变量(字节单元),试编写程序段计算(只写有关功能的指令). X 当X≥0时Y= │X│当X<0时XDBX
YDBY
···MOVAL,X
CMPAL,0
JGEDONE
NEGAL
DONE:MOVY,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字节单元)=38HDATASEGMENT
BCDDBXXH
ASCDB?,?
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCL,4
MOVAL,BCD;取BCD码数
SHRAL,CL;转换高位
ADDAL,30H
MOVASC,AL
MOVAL,BCD
ANDAL,0FH;转换低位
ADDAL,30H
MOVASC+1,AL
MOVAH,4CHINT21H
CODEENDS
ENDSTART习题4.20在A1单元开始定义了一个长度为N的字符串,找出其中所有的小写字母并存放在以A2开始的存储区中.统计出小写字母的个数,存放到SL单元中.请编写一完整的源程序.程序段如下: DATASEGMENT A1DB‘……’ NDBEQU$-A1 A2DBNDUP(?) SLDB? DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;给数据段段段地址赋值MOVCX,N;设置循环次数LEASI,A1;SI指向源字符串
LEADI,A2;DI指向目的字符串MOVDL,0;小写字母计数器清零L1:MOVAL,[SI];当前字符同小写字母‘a’比较CMPAL,61HJLL2CMPAL,7AH;当前字符同小写字母‘z’比较JGL2MOV[DI],AL;当前字符为小写字母则将其移动到A2INCDIINCDL并将计数器DL加1L2:INCSI;SI指向源串中的下一个字符LOOPL1MOVSL,DL;将DL的值写入到SL中MOVAH,4CH;返回系统INT21HCODEENDSENDSTART注意:在8086汇编中,寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址中只能使用BX、BP、SI和DI这4个寄存器,不能使用AX、DX等其它寄存器。这一点在编写汇编程序的时候需要注意。习题4.21设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放0~9的平方值,请用直接查表法编写一子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元.并写出主程序的调用方式.数据段如下:DATASEGMENTDATDBXXHSQRTABDB0,1,4,9,…,81SQRDB?DATAENDSDATA
SEGMENT
DATDB
XXH
SQRTAB
DB
0,1,4,9,…,81
SQR
DB?
DATA
ENDS
STACK
SEGMENTPARA
STACK
DW
20H
DUP(?)
STACK
ENDS
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA,SS:STACK
START:
MOV
AX,DATA
MOV
DS,AX
┇
CALL
DTOS
┇
MOV
AH,4CH
INT
21HDTOS
PROC
PUSH
AX
PUSH
BX
LEA
BX,SQRTAB
MOV
AL,DAT
TEST
AL,80H;判断AL的正负JE
NEXT
NEG
AL
NEXT:
XLAT
SQRTAB;AL←(BX+AL)MOV
SQR,AL
POP
BX
POP
AX
RET
DTOS
ENDP
CODE
ENDS
END
SRART习题4.22编写能完成下列要求的程序:测试字节数据STATUS,若其中位1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同范本之终止物业服务合同(2025版)
- 机房建设施工合同2025年
- 二零二五年度海绵城市建设项目施工合同(含雨水收集)
- 2025版高压电力线路施工合同终止与解除合同
- 2025年度新型智慧城市服务框架合同
- 2025版新能源汽车充电站运营管理合同
- 二零二五年度德宏州林业草原信息公开专栏森林资源管理与监测服务协议
- 2025版酒厂公司正式员工聘用及绩效考核合同
- 二零二五年度电子商务平台个人信息保护与合规性合同
- 2025版环保评估合同法技术服务协议
- 《癌前病变》课件
- 肌肉酸疼的原因与治疗方法
- 机场场务技术与管理基础知识单选题100道及答案解析
- 抖音娱乐主播直播培训
- 《数据仓库基础培训》课件
- 《绿色低碳铝评价导则及追溯指南》T CNIA 0245-2024
- 外研版(三起) 小学英语六年级上册 Module 2 单元测试(含答案含听力原文无音频)
- 设备管理中存在的问题及改进措施
- 华东师范大学《现代几何基础》2021-2022学年第一学期期末试卷
- 营造林技能竞赛
- 高考3500词汇表(完整版)
评论
0/150
提交评论