




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章作业答案4.1 分析汇编语言源程序应该由哪些逻辑段组成?各段的作用是什么?语句标号和变量应具备哪3种属性?【解答】汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加数据段,至少要有一个代码段。各段的作用如下:(1)代码段用来存放程序和常数。(2)数据段用于数据的保存。(3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。(4)附加数据段用于数据的保存。语句标号和变量应具备的3种属性:段属性、偏移属性和类型属性。4.2 指出下列程序中的错误: STAKSG
2、 SEGMENT DB 100 DUP(?) STA_SG ENDS DTSEG SEGMENT
3、 DATA1 DB ? DTSEG END CDSEG SEGMENT MAIN PROC
4、; FAR START: MOV DS,DATSEG MOV AL,34H
5、160; ADD AL,4FH MOV DATA,AL
6、60; START ENDP CDSEG ENDS END答案:改正后:STAKSG SEGMENT DB &
7、#160; 100 DUP(?)STAKSG ENDSDTSEG SEGMENTDATA1 DB ?DTSEG
8、0; ENDSCDSEG SEGMENTMAIN PROC FAR ASSUME CS: CDSEG, DS: DTSEG, SS: STAKSGSTART: MOV
9、0; AX, DTSEGMOV DS, AXMOV AL, 34HADD AL, 4FHMOV DATA1, ALMOV AH, 4CHINT 21HMAIN END
10、PCDSEG ENDS END S4.3. 将下列文件类型填入空格:(1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map
11、160; 编辑程序输出的文件有_; 汇编程序输出的文件有_; 连接程序输出的文件有_。答案:编辑程序输出文件: (4)汇编程序输出文件: (1), (3), (5)连接程序输出文件: (2), (6)4.4 下面的数据项定义了多少个字节? DATA_
12、1 DB 6 DUP(4 DUP(0FFH)答案: 24字节4.5. 对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么? DTSEG SEGMENT
13、60;| DTSEG SEGMENT ORG 10H |
14、 ORG 10H DATA1 DB 72H |
15、0; DATA1 DW 7204H DB 04H | &
16、#160; DTSEG ENDS DTSEG ENDS |答案:不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.4.6. 下面的数据项设置了多少个字节?
17、; (1) ASC_DATA DB '1234' (2) HEX_DATA DB 1234H答案: (1) 设置了4个字节 (2) 设置了2个字节4.7. 执行下列指令后,
18、 AX寄存器中的内容是什么? TABLE DW 10,20,30,40,50 ENTRY DW 3
19、 . . .MOV BX,OFFSET TABLEADD BX,ENTRYMOV AX,BX答案:
20、160; (AX)=404.8. 分析下列程序的功能,写出堆栈最满时各单元的地址及内容。 SSEG SEGMENT 'STACK' AT 1000H ; 堆栈的段地址为1000H
21、60; DW 128 DUP(?) TOS LABEL WORD SSEG
22、; ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DSEG SEGMENT DW
23、; 32 DUP(?) DSEG ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CSEG SEGMENT MAIN
24、0; PROC FAR ASSUME CS:CSEG, DS SEG,SS:SSEG START: MOV
25、 AX,SSEG MOV SS,AX MOV
26、160; AX,DSEG MOV DS,AX MOV
27、0; AX,4321H CALL HTOA RETN: MOV AH,4CH &
28、#160; INT 21H MAIN ENDP ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
29、0; HTOA PROC NEAR CMP AX,15
30、0; JLE B1 PUSH AX PUSH
31、160; BP MOV BP,SP MOV BX
32、,BP+2 AND BX,0FH MOV BP+
33、2,BX POP BP MOV CL,4
34、0; SHR AX,CL CALL HTOA B1:
35、; POP AX B2: ADD AL,30H &
36、#160; JL PRT ADD AL,07 PRT:
37、0; MOV DL,AL MOV AH,2
38、160; INT 21H RET HTOA ENDP CSEG &
39、#160; ENDS ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - END
40、 START答案:1000:0F2HB11000:0F4H31000:0F6HB11000:0F8H21000:0FAH B11000:0FCH 11000:0FEH RETN1000:100H 4.9 下面是将内存一字节数据高4位和低4位互换并放回原位置的程序,找出错误并改正。 DATA SEGMENTDD1 DB 23HDATA ENDSCODE SEGMENTASSUME CS
41、:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,OFFSET DD1MOV AL,SIMOV CL,4RCR AL,CLMOV SI,ALMOV AH,4CHINT 21HCODE ENDS END START【解答】程序第8行错误:LEA SI,OFFSET DD1,应去掉OFFSET;程序第10行错误:RCR AL,CL,应使用ROR或ROL,改为ROR AL,CL4.10 编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示"MATCH",若不同则显示"N
42、O MATCH"。答案:datarea segment string1 db 'asfioa' string2 db 'xcviyoaf'
43、 mess1 db 'MATCH','$' mess2 db 'NO MATCH','$'datarea endsprognam segmen
44、t assume cs:prognam,ds:datareamain proc far start: push dssub ax,axpush axmov
45、; ax,datareamov ds,axmov es,axbegin: mov cx, string2-string1 mov
46、60; bx, mess1-string2 cmp bx,cx jnz dispnolea
47、dx,addrlea si,string1lea di,string2repe cmpsbjne dispno
48、0; mov ah,9 lea dx,mess1int 21h retdispno: mov &
49、#160; ah, 9 lea dx, mess2 int 21hretmain
50、; endpprognam ends end start4.11根据字节变量control中的各位被置位情况控制程序转移到8个远过程中的一个。【解答】DATASEGMENTSUBSTABLE DW SUBR1 DW SUBR2DW SUBR3DW SUBR4 DW SU
51、BR5 DW SUBR6 DWSUBR7 DWSUBR8CONTROL DB 40HDATAENDSSS_SEGSEGMENTSTACKDB100DUP(0)SS_SEGENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SS_SEGMAINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVBX,OFFSET SUBSTABLEMOVAL,CONTROLDIVERT:RCRAL,1JCGETAGADDBX,2JMPSHORTDIVERTGETAG:CALLBXRETMAINENDPSUBR1PROC RETSUBR1EN
52、DP SUBR8PROC RETSUBR8ENDPCODEENDSENDMAIN4.12 编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为; 输入数字: 0,1,2,3,4,5,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4答案:Data segmentscode db
53、7,5,9,1,3,6,8,0,2,4buffer db 10 dup(?)Data endsCode segmentassume cs:prognam,ds:datareastart: mov ax, Datamov ds,ax mov si,0 mov cx,10 lea bx,scode
54、input: mov ah,01 int 21h cmp al,0ahjz exitand al,0fhxlatmov buffersi,alinc siloop inputexit:mov ah,4chint 21h Code ends End sta
55、rt4.13 从键盘输入一系列字符,以回车符结束,编程统计其中非数字字符的个数。【解答】DATA SEGMENT BLOCK DB 100 DUP (?) COUNT DB ?DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX,DATA MOV DS,AX MOV DL,0 LEA SI,BLOCKLP: MOV AH,1INT 21HCMP AL,0DHJZ EXIT MOV SI,AL CMP AL,30HJAE NEXTCMP AL,39HJBE NEXT INC DLNEXT: INC SI JMP LPEXIT: MOV
56、COUNT,DLMOV AH,4CH INT 21HCODE ENDS END START4.14请用16进制和10进制分别显示内存单元中一个字节的有符号数。【解答】DATASEGMENT DATA1DB088H DATA2 DB 4 DUP(0)DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSXOR AX,AXPUSHAXMOVAX,DATAMOVDS,AX HEXN:MOVAL,DATA1 MOV CL,4 SHR AL,CL CAL
57、LDISPL1 MOVAL,DATA1 AND AL,0FH CALL DISPL1 DECN:MOV AL,DATA1 SHL AL,1 JNC EEE MOV DL,'-' MOV AH,2 INT 21H MOV AL,DATA1 NEG AL JMP DECN0 EEE:MOV AL,DATA1 DECN0:LEA BX,DATA2 XOR SI,SI MOV DL,10 DECN1:XOR AH,AH DIV DL MOV BX+SI,AH INC SI AND AL,0FFH JZ AAA JMP DECN1 AAA:DEC SI JZ BBB MOV AL,BYT
58、E PTR BX+SI CALL DISPL1 JMP AAA BBB:MOV AL,BYTE PTR BX CALL DISPL1 RETMAIN ENDPDISPL1 PROC PUSH AX ADD AL,30H CMP AL,39H JNA CCC ADD AL,07H CCC:MOV DL,AL MOV AH,2 INT 21H POP AX RETDISPL1ENDPCODEENDSENDMAIN4.15在数据段中以buffer单元开始连续存放10个8位二进制无符号数,将其中最大数找出来,存于max单元中,试编程。【解答】data segmentbufferdb27, 17, 10
59、0, 65, 12, 36, 79, 41,88,3maxdb?data endsss_segsegment stackdb100 dup(0)ss_segendscodesegment assumecs:code, ds:data, ss:ss_segmainprocfarmovax, datamovds, axmovcx, 9movbx, 0moval, bufferbxmain1:addbx,2cmpal, bufferbxjgenextmoval, bufferbxnext:loopmain1movmax, almovax, 4c00hint21hmainendpcodeendsend
60、main4.16在数据段longdata中存放32位二进制无符号数(低位在前),将该变量以16进制形式显示输出,试编程。【解答】DATASEGMENTLONGDATADD0123ABC56HSTRINGDB 'THE NUBER IS:$'DATAENDSSTACKSEGMENTSTACKDB 100 DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRINGMOVAH,9INT21HMOVB
61、X,OFFSETLONGDATAADDBX,3MOVCX,0404HBBB:MOVDL,BXDECBXMOVDH,DLSHRDL,CLCALLDISPLANDDH,0FHMOVDL,DHCALLDISPLDECCHJNZBBBMOVDL,48HINT21HJMPZZZDISPLPROCMOVAH,2ADDDL,30HCMPDL,39HJNAEEEADDDL,07HEEE:INT21HRETDISPLENDPZZZ:RETMAINENDPCODEENDSENDMAIN4.17在数据段中以buffer单元开始连续存放10个8位二进制无符号数,将其按由大到小的顺序排列,试编程。【解答】DATASEGMENTBUFFERDB37,36,39,32,35,38,31,34,30,33COUNTEQU$-BUFFERDATAENDSSTACKSEGMENTDB20DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCMOVAX,DATAMOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州软件职业技术学院《数字电子技术基础A》2023-2024学年第二学期期末试卷
- 平顶山工业职业技术学院《普通话与教师语言规范》2023-2024学年第二学期期末试卷
- 杭州职业技术学院《民用建筑工程调研实训》2023-2024学年第二学期期末试卷
- 烟台城市科技职业学院《太极养生俱乐部》2023-2024学年第二学期期末试卷
- 石家庄铁道大学《电路与电子基础》2023-2024学年第二学期期末试卷
- 上海电机学院《数学教学与实践》2023-2024学年第二学期期末试卷
- 上海第二工业大学《数据挖掘技能训练》2023-2024学年第二学期期末试卷
- 辽宁商贸职业学院《地球科学概论》2023-2024学年第二学期期末试卷
- 广东云浮中医药职业学院《系统节能》2023-2024学年第二学期期末试卷
- 广州现代信息工程职业技术学院《早期接触临床》2023-2024学年第二学期期末试卷
- 《中医学》消渴-课件
- 向政府写诉求书范文(精选12篇)
- 电视节目策划学胡智峰
- 认识自我 悦纳自我 课件- 高中生心理健康主题班会
- 科技成果-秸秆清洁制浆及其废液肥料资源化利用技术
- 《社区治理研究国内外文献综述(1900字)》
- 烟花爆竹事故应急处置
- 《马克思主义与社会科学方法论》课件第四讲 社会矛盾研究方法
- 会宝岭选矿厂集中控制技术方案
- 生产车间如何节能减耗(课堂PPT)
- 2021译林版高中英语选择性必修四单词表
评论
0/150
提交评论