《IBMPC汇编语言程序设计》作业答案.docx
- 文档编号:22893258
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:33
- 大小:74.05KB
《IBMPC汇编语言程序设计》作业答案.docx
《《IBMPC汇编语言程序设计》作业答案.docx》由会员分享,可在线阅读,更多相关《《IBMPC汇编语言程序设计》作业答案.docx(33页珍藏版)》请在冰豆网上搜索。
《IBMPC汇编语言程序设计》作业答案
《IBM—PC汇编语言程序设计》作业参考答案目录
第一次2
第二次2
第三次2
第四次2
第五次3
第六次4
第七次4
第八次5
第九次7
第十次7
第十一次12
第十二次13
第十三次13
第十四次13
第十五次14
第十六次15
第一次
1.1、答:
(3)4095=111111111111B=FFFH
1.2、答:
(1)101101B=2DH=45
1.3、答:
(4)1234H=1001000110100B=4660
1.4、答:
(3)ABCD-FEH=AACFH=43727
1.5、答:
(6)-85-(-76)=10101011B-10110100B=10101011B+01001100B=11110111B=0F7H;CF=0;OF=0
1.6、答:
(1)D8H表示的带符号数为-40,D8H表示的无符号数为216
第二次
2.2、答:
存储器里的存放情况如右上图所示。
2.3、答:
30022H字节单元的内容为ABH;30024H字节单元的内容为EFH。
30021H字单元的内容为AB34H;30022H字单元的内容为CDABH。
2.4、答:
3017:
000A、3015:
002A和3010:
007A的存储单元的物理地址都是3017AH。
2.5、答:
该程序的第一个字的物理地址是0AAA40H。
2.8、答:
BX、BP、SI、DI、堆栈操作时的SP、对应的段地址、386及其后继机型的Exx。
第三次
3.1、答:
(1)操作数在指令中,即立即数;
(2)EA=D=7237H;
(3)无EA,操作数为(BX)=637DH;
(4)EA=(BX)=637DH;
(5)EA=(BX)+D=0D5B4H;
(6)EA=(BX)+(SI)=8E18H;
(7)EA=(BX)+(SI)+D=1004FH;超过段的边界,最高进位丢失,因此EA=004FH。
3.4、答:
(1)(AX)=1200H
(2)(AX)=0100H
(3)(AX)=4C2AH
(4)(AX)=3412H
(5)(AX)=4C2AH
(6)(AX)=7856H
(7)(AX)=65B7H
3.5、答:
(1)JMPNEARPTR5119H;(IP)=5119H+((IP)+03H)=7CDCH,物理地址PA=09CDCH
(IP)+03H是JMPNEARPTR5119H指令的下一条指令的首地址。
(2)JMPWORDPTR[BX];(IP)=((DS)*10H+(BX))=0600H,PA=02600H
(3)JMPD[BX];(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH
第四次
3.10、答:
MOVAX,TABLE是将TABLE单元的内容送到AX,(AX)=1234H
LEAAX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0032H
3.11、答:
(AX)=1E00H
3.17、答:
以下程序都未考虑带符号数的溢出
(1)Z←W+(Z-X)
MOVAX,Z
SUBAX,X
ADDAX,W
MOVZ,AX
(2)Z←W-(X+6)-(R+9)
MOVBX,X
ADDBX,6
MOVCX,R
ADDCR,9
MOVAX,W
SUBAX,BX
SUBAX,CX
MOVZ,AX
(3)Z←(W*X)/(Y+6),R←余数
ADDY,6
MOVAX,W
IMULX
IDIVY
MOVZ,AX
MOVR,DX
(4)Z←((W-X)/5*Y)*2
MOVAX,W
SUBAX,X
CWD
MOVBX,5
IDIVBX
IMULY
SHLAX,1;((DX),(AX))*2
RCLDX,1
3.19、下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?
MOVAX,0;(AX)=0,标志位不变
DECAX;(AX)=0FFFFH,CF不变,SF=1,ZF=0,OF=0
ADDAX,7FFFH;(AX)=7FFEH,CF=1,SF=0,ZF=0,OF=0
ADDAX,2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1
NOTAX;(AX)=7FFFH,标志位不变
SUBAX,0FFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1
ADDAX,8000H;(AX)=0,CF=1,SF=0,ZF=1,OF=1
SUBAX,1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0
ANDAX,58D1H;(AX)=58D1H,CF=0,SF=0,ZF=0,OF=0
SALAX,1;(AX)=0B1A2H,CF=0,SF=1,ZF=0,OF=1
SARAX,1;(AX)=0D8D1H,CF=0,SF=1,ZF=0,OF=0
NEGAX;(AX)=272FH,CF=1,SF=0,ZF=0,OF=0
RORAX,1;(AX)=9397H,CF=1,SF和ZF不变,OF=1
答:
见注释。
第五次
3.26、答:
本程序段将((DX),(AX))的双字同时左移4位,即将此双字乘以10H(16)。
3.27、答:
见注释。
(1)SHRDX,1;(DX)=05CH
(2)SARDX,CL;(DX)=17H
(3)SHLDX,CL;(DX)=5C8H
(4)SHLDL,1;(DX)=72H
(5)RORDX,CL;(DX)=2017H
(6)ROLDL,CL;(DX)=0CDH
(7)SALDH,1;(DX)=0B9H
(8)RCLDX,CL;(DX)=2CCH
(4)RCRDL,1;(DX)=0DCH
3.30、答:
程序段如下:
MOVCX,18
MOVAL,‘&’
CLD
MOVDI,SEGSTRING
MOVES,DI
LEADI,STRING
REPNESCASB
JNENEXT
DECDI
MOVES:
BYTEPTR[DI],‘’;送空格
NEXT:
┇
第六次
3.34、答:
(1)转向L1
(2)转向L1
(3)转向L2
(4)转向L5;因为加法指令后AX中已经是6FF3H
(5)转向L5;因为加法指令后AX中已经是4A14H
3.35、答:
(1)JNB、JBE、JNL、JLE
(2)JNB、JBE、JNL、JLE
(3)JNB、JNBE、JL、JLE
(4)JNB、JNBE、JNL、JNLE
(5)JNB、JNBE、JL、JLE
(6)JB、JBE、JL、JLE
(7)JB、JBE、JNL、JNLE
(8)JNB、JNBE、JL、JLE
3.38、答:
(1)(AX)=5H,(BX)=10H,(CX)=0H,(DX)=0H
(2)(AX)=2H,(BX)=4H,(CX)=3H,(DX)=1H
(3)(AX)=3H,(BX)=7H,(CX)=2H,(DX)=0H
3.51、答:
JMPBEGIN
UPDB0
DOWNDB0
TABLEDB100HDUP(?
)
BEGIN:
MOVCX,100H
MOVBX,-1
MOVSI,0
MOVDI,0
L1:
INCBX
CMPTABLE[BX],42H
JAL2
JBL3
JMPL4
L2:
INCSI
JMPL4
L3:
INCDI
L4:
LOOPL1
MOVUP,SI
MOVDOWN,DI
第七次
4.3、假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?
它们的错误是什么?
(1)MOVBP,AL;错,寄存器类型不匹配
(2)MOVWORD_OP[BX+4*3][DI],SP
(3)MOVWORD_OP1,WORD_OP2;错,不能都是存储器操作数
(4)MOVAX,WORD_OP1[DX];错,DX不能用于存储器寻址
(5)MOVSAVE_WORD,DS
(6)MOVSP,SS:
DATA_WORD[BX][SI]
(7)MOV[BX][SI],2;错,[BX][SI]未指出数据类型
(8)MOVAX,WORD_OP1+WORD_OP2
(9)MOVAX,WORD_OP1-WORD_OP2+100
(10)MOVWORD_OP1,WORD_OP1-WORD_OP2
答:
见注释。
4.12、给出等值语句如下:
ALPHAEQU100
BETAEQU25
GAMMAEQU2
下列表达式的值是多少?
(1)ALPHA*100+BETA;=2729H
(2)ALPHAMODGAMMA+BETA;=19H
(3)(ALPHA+2)*BETA–2;=9F4H
(4)(BETA/3)MOD5;=3H
(5)(ALPHA+3)*(BETAMODGAMMA);=67H
(6)ALPHAGEGAMMA;=0FFFFH
(7)BETAAND7;=01H
(8)GAMMAOR3;=03H
答:
见注释。
4.14、对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDBDB?
TABLEADW20DUP(?
)
TABLEBDB‘ABCD’
(1)MOVAX,TYPEFLDB;(AX)=0001H
(2)MOVAX,TYPETABLEA;(AX)=0002H
(3)MOVCX,LENGTHTABLEA;(CX)=0014H
(4)MOVDX,SIZETABLEA;(DX)=0028H
(5)MOVCX,LENGTHTABLEB;(CX)=0001H
答:
见注释。
4.17、答:
程序如下:
D_SEGSEGMENT
AUGWLABELWORD
AUGENDDD99251
SUMDD?
D_SEGENDS;以上定义数据段
;----------------------------------------------------------------
E_SEGSEGMENT
ADDWLABELWORD
ADDENDDD-15962
E_SEGENDS;以上定义附加段
;----------------------------------------------------------------
C_SEGSEGMENT
MAINPROCFAR
ASSUMECS:
C_SEG,DS:
D_SEG,ES:
E_SEG
START:
PUSHDS;设置返回DOS
SUBAX,AX
PUSHAX
MOVAX,D_SEG
MOVDS,AX;给DS赋值
MOVAX,E_SEG
MOVES,AX;给ES赋值
MOVAX,AUGW;以下6条指令进行加法计算
MOVBX,AUGW+2
ADDAX,ES:
ADDW
ADCBX,ES:
ADDW+2;不考虑有符号数溢出
MOVWORDPTRSUM,AX
MOVWORDPTR[SUM+2],BX
RET
MAINENDP
C_SEGENDS;以上定义代码段
;----------------------------------------------------------------
ENDSTART
第八次
5.1、答:
程序段如下:
BEGIN:
MOVAH,1;从键盘输入一个字符
INT21H
CMPAL,‘a’;输入字符<‘a’吗?
JBSTOP
CMPAL,‘z’;输入字符>‘z’吗?
JASTOP
SUBAL,20H;转换为大写字母,
;用ANDAL,11011111B也可
MOVDL,AL;显示一个字符
MOVAH,2
INT21H
JMPBEGIN
STOP:
RET
5.3、答:
程序段如下:
DSEGSEGMENT
STOREDB4DUP(?
)
DSEGENDS
┇
BEGIN:
MOVCL,4;右移四次
MOVCH,4;循环四次
LEABX,STORE
A10:
MOVDX,AX
ANDDX,0FH;取AX的低四位
MOV[BX],DL;低四位存入STORE中
INCBX
SHRAX,CL;右移四次
DECCH
JNZA10;循环四次完了码?
B10:
MOVDL,STORE;四组数分别放在AL、BL、CL和DL中
MOVCL,STORE+1
MOVBL,STORE+2
MOVAL,STORE+3
STOP:
RET
5.9、答:
程序段如下:
BEGIN:
MOVBX,0;用于存放四位的16进制数
MOVCH,4
MOVCL,4
INPUT:
SHLBX,CL;将前面输入的数左移4位
MOVAH,1;从键盘取数
INT21H
CMPAL,30H;<0吗?
JBINPUT;不是‘0~F’的数重新输入
CMPAL,39H;是‘0~9’吗?
JAAF;不是,转‘A~F’的处理
ANDAL,0FH;转换为:
0000B~1001B
JMPBINARY
AF:
ANDAL,11011111B;转换为大写字母
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBMPC汇编语言程序设计 IBMPC 汇编语言 程序设计 作业 答案