汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx

上传人:b****5 文档编号:16135461 上传时间:2022-11-20 格式:DOCX 页数:46 大小:32.91KB
下载 相关 举报
汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx_第1页
第1页 / 共46页
汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx_第2页
第2页 / 共46页
汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx_第3页
第3页 / 共46页
汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx_第4页
第4页 / 共46页
汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx

《汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx(46页珍藏版)》请在冰豆网上搜索。

汇编语言程序设计 程学先 汇编第234章作业参考答案文档格式.docx

2.22一字数据压栈时堆栈指针如何改变?

弹出一字数据时堆栈指针如何改变?

压栈时堆栈指针减2;

弹出一字数据时堆栈指针加2

2.23已知(SP)=2088H,(AX)=1A89H,(BX)=90CDH。

依次执行以下三条指令后,画图说明堆栈中数据情况,及SP、AX、BX中数据。

PUSHAX

PUSHBX

POPAX

(SP)=2086H,(AX)=90CDH,(BX)=90CDH。

*2.25编写程序段求8!

(8的阶乘)。

MOVAX,8

MOVBX,7

NEXT:

DX,0

MULBX

DECBX

JNZNEXT

2.27假设(AX)=07EH,变量BUFFER中存放的内容为B5H,求下列各条指令单独执行后的结果。

(1)ANDAX,BUFFER34H

(2)XORAX,BUFFERCBH

(3)ORAX,BUFFER0FFH

(4)ANDAX,00

(5)XORAX,OFFH81H

(6)TESTAX,8000H相与结果为0时。

AX为正,值不变

*2.28编写程序段,判断(AL)中的有符号数是正数还是负数,正数在CL中写0,否则写1。

CMPAL,0

MOVCL,0

JGENEXT

MOVCL,1

……

2.29编写程序段,对存放在(DX)、(AX)中的双字数据求补。

MOVBX,0

SUBBX,AX

MOVAX,BX

SBBBX,DX

MOVDX,BX

2.31假设(DX)=78D5H,(CL)=5,CF=0,确定下列各条指令单独执行后(DX)中的值。

(1)SHLDH,1(DX)=F0D5H

(2)SALDX,CL(DX)=1AA0H

(3)SHRDX,CL(DX)=03C6H

(4)SARDL,1(DX)=78EAH

(5)ROLDX,CL(DX)=1AAFH

(6)RCRDL,1(DX)=786AH

(7)RCLDH,CL(DX)=0FD5H

2.32按下列要求编写指令序列。

(1)清除DH中最低3位而不改变其他位,结果存入BH。

ANDDH,0F8H

(2)将DI中最高3位置1而不改变其他位。

ORDI,0E000H

(3)将AX中0~3位置1、7~9位取反、其他位清0。

ORAX,0FH

XORAX,380H

ANDAX,38FH

(4)检查BX中第2、5、9位是否至少有1位是1。

TESTAX,224H如果结果非0

(5)检查CX中第1、6、11位是否同时为1。

NOTCX

TESTCX,842H如果结果为0

(6)检查BX中第0、2、9、13位是否至少有1位是0。

NOTBX

TESTBX,2205H如果结果非0

(7)检查DX中第1、4、11、14位是否同时是0。

TESTDX,4812H如果结果为0

2.33编写指令序列分别实现下述功能。

(1)右移DI3位,并将0移入最高位。

MOVCL,3

SHRDI,CL

(2)将AL左移一位,将0移入最低位。

SHLAL,1

(3)DX右移6位且保持正负特性不变。

MOVCL,6

SARDX,CL

(4)将AL中压缩BCD码变成AX中的非压缩BCD码。

MOVAH,0

SHLAL,CL

SHRAL,CL

2.34分析下面的程序段完成什么功能?

MOVCL,4

SHRAX,CL

MOVBL,DL

SHRDX,CL

SHLBL,CL

ORAH,BL

将双字(DX,AX)逻辑右移4位

*2.35设数据段偏移地址1000H处开始存放有10个字节数据,将其求和,结果存放在AX中。

MOVCX,10

MOVSI,1000H

MOVAX,0

CLC

LOOP1:

ADCAX,[SI]

INCSI

LOOPLOOP1

2.37从键盘输入0到9之间某数字字符,利用列表法将该数字的平方值放到AL中。

SUBDB0,1,4,9,16,25,36,49,64,81

MOVAH,1

INT21H

SUBAL,30H

MOVAL,SUB[BX]

2.38已知X、Y、Z、P、K均为16位带符号数,求计算(1000+X*Y-Z)/P的程序段。

注明结果的商与余数所存放的位置。

MOVAX,X

IMULY;

x*y

MOVCX,AX

MOVBX,DX

MOVAX,Z

CWD;

符号扩展,AX中符号扩展到DX中

SUBCX,AX

SBBBX,DX;

x*y-z

MOVAX,1000

MOVDX,0

SUBAX,CX

SBBDX,BX

MOVBX,P

IDIVBX;

(1000+X*Y-Z)/P

 

4.1编制程序计算Y=5X+7,设X值在DAX字节单元,结果存入RLT字节单元。

X为带符号整数。

DATASEGMENT

DAXDB15H

RLTDB0

DATAENDS

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

CODESEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVAL,DAX

MOVBL,5;

X*5

IMULBL;

有符号数乘法

ADDAL,7

MOVRLT,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

;

DAX绝对值不能超过18H(0-18H或0FFH-0E9H)。

否则,RLT得为字类型,ADDAL,7改为ADDAX,7

因为7已知为正,无需符号扩展。

4.3编制程序计算X-Y。

设X、Y分别在DAX、DAY单元,结果存入RESULT单元。

(1)X、Y为字节数据

(2)X、Y为字数据(3)X、Y为双字节数据

要求:

存取数据时至少使用三种不同的寻址方式。

1、用直接寻址

DAXDB18H

DAYDB65H

RESULTDB0

MOVAL,DAX;

源操作数为直接寻址

SUBAL,DAY

MOVRESULT,AL

ENDSTART

2、换间接寻址与相对寻址

DAXDW18H

DAYDW65H

RESULTDW0

MOVSI,DAX

MOVDI,RESULT

MOVAX,[SI];

源操作数为间接寻址

SUBAX,[SI+2];

源操作数为相对寻址

MOV[DI],AX

3、X、Y为双字节数据,必须分高16位与低16位分别运算

方法1

DAXDD2A341928H

DAYDD6873BC25H

RESULTDD0

MOVAX,WORDPTRDAX;

减低16位

SUBAX,WORDPTRDAY

MOVWORDPTRRESULT,AX

MOVAX,WORDPTRDAX+2;

减高16位

SUBAX,WORDPTRDAY+2

MOVWORDPTRRESULT+2,AX

特别注意加“WORDPTR”

注意低16位与高16位各是如何表示的。

还要注意,本题要求出现三种以上寻址方式。

目前解中用到了寄存器寻址、直接寻址、间接寻址与相对寻址4种方式。

方法2:

LEASI,DAX

LEADI,DAY

LEABX,RESULT

MOVAX,[SI]

SUBAX,[DI];

MOV[BX],AX

MOVAX,[SI+2]

SBBAX,[DI+2];

MOV[BX+2],AX

4.4设内存OPCD单元存放一个16位代码,编制程序将其中15~13,12~8,7~3,2~0位的代码分别存入WCD开始的单元。

每段代码的最低位与单元的第0位对齐。

解法1:

OPCDDW2A5CH

WCDDW?

?

MOVAX,OPCD

MOVCL,13;

逻辑右移13位

SHRAX,CL

MOVWCD,AX

ANDAX,1FFFH;

屏蔽高3位

MOVCL,8;

MOVWCD+2,AX

ANDAX,0FFH

MOVCL,3

SH

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

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

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

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