汇编语言程序设计(第二版)课后题答案.pdf

上传人:赵** 文档编号:69174304 上传时间:2022-12-31 格式:PDF 页数:27 大小:431.23KB
返回 下载 相关 举报
汇编语言程序设计(第二版)课后题答案.pdf_第1页
第1页 / 共27页
汇编语言程序设计(第二版)课后题答案.pdf_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《汇编语言程序设计(第二版)课后题答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计(第二版)课后题答案.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4.1、判断下列标识符的合法性。1)、code 合法 2)、Data 合法 3)、ABCDH 合法 4)、1abcH 不 5)、eax 不 6)、?01 合法 7)、A?合法 8)、合法 9)、不 10)、AX$DX 合法 11)、_BX 合法 12)、CX 不 4.2、按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或省缺)。1)、定义一个字节区域,第一个字节的值为20,其后跟20 个初值为0 的连续字节;DB 20,20 DUP(0)2)、定义一个以0 为结束符的字符串,其初值为:Th

2、e course is easy;DB“The course is easy”,0 3)、定义一个以$为结束符的字符串,该串中含有换行符和回车符;DB 0D,0A,”$”4)、定义100 个字,其初值为0;DW 100 DUP(0)5)、从一个偶地址开始定义一个字变量word;EVEN WORD DW?6)、先定义一个字符串String,其偏移量指定为10,其初值为ABCDEF,然后再定义3 个字类型的数组Data,要求String 和 Data 的偏移量相同;ORG 10 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!STRING DB ABC

3、DEF ORG 10 DATA DW 3 DUP(?)7)、定义一个字符串String,其初值为12345678,再定义4 个字类型的数组Data,要求String 和 Data 共享同一片内存单元;STRING DB 12345678 ORG$-8 DATA DW 4 DUP(?)4.3、把下列C 语言的变量定义语句改写成与之等价的汇编语言语句。1)、char ch1,ch23,ch3=Are you ready?,ch4=Q;CH1 DB?CH2 DB 3 DUP(?)CH3 DB Are you ready?,0 CH4 DB“Q”2)、int w1,w25,w3=0 x1234,w4=

4、90,89,432,344;W1 DW?W2 DW 5 DUP(?)W3 DW 1234H W4 DW 90,89,432,344 3)、long int d1=1234,d2,d310,d4=1,2,3,4,5,6;D1 DD 1234 D2 DD?D3 DD 10 DUP(?)D3 DD 1,2,3,4,5,6 4.4、假设4.3 题中三组变量在内存中是连续存放的,且变量ch1 的偏移量是20H,试欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!求出其它每个变量的偏移量。变量 偏移量 变量 偏移量 变量 偏移量 Ch1 20H W1 34H D

5、1 4AH Ch2 21H W2 36H D2 4EH Ch3 24H W3 40H D3 52H Ch4 33H W4 42H D4 7AH 4.5、按下列要求分别写出汇编语言的结构定义,如果没有说明结构分量的类型,请根据日常习惯自行指定其数据类型(可使用已有的结构定义)。1)、定义日期结构类型Date,其包括:Year(年)、Month(月)和 Day(日);DATA STRUC 偏移量 YEAR DB?0 MONTH DB?1 DAY DB?2 DATA ENDS 2)、定义时间结构类型Time,其包括:Hour(小时)、Minute(分)、Second(秒)和centsec(百分之一秒

6、);TIME STRUC HOUR DB?0 MINUTE DB?1 SECOND DB?2 CENTSEC DB?3 TIME ENDS 3)、定义结构Peason,其包括:name(姓名,字符,长度为8)、Birth(出生日期,Date),stature(身高,以厘米为单位的整数),Address(地址,30 个字符)PERSON STRUC 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!NAME DB 8 DUP(?)0 BIRTH DATA 8 STATURE DB?0BH ADDRESS DB 30 DUP(?)0CH PERSON E

7、NDS 4.6、试求出4.5 题各结构中字段的偏移量。4.7、把下列C 语言的结构或结构变量的定义改写为与之等价的汇编语言定义语句。1)、struct ScreenBuffer char c1;/字符 char attr;/字符属性 Buffer2000;ScreenBuffer struc C1 DB?ATTR DB?ScreenBuffer ENDS BUFFER ScreenBuffer 2000 DUP()2)、struct FILE int level,flags;char fd,hold;int bsize,istemp,token;3)、struct CELLREC char a

8、ttrib;union char text201;long value;struct long fvalue;char formula201;f;v;欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!答:STRUC_F STRUC FVALUE DD?FORMULA DB 201 DUP(?)STRUC_F ENDS UNION_V UNION TEXT DB 201 DUP(?)VALUE DD?F STRUC_F UNION_V ENDS CELLREC STRUC ATTRIB DB?V UNION_V CELLREC ENDS 4.8、按下列

9、要求分别写出汇编语言的记录定义。1)、定义标志位寄存器低8 位标志位,其相应位用其标志位的符号来命名,未用部分的命名自行确定;FLAGS RECORD SF:1,ZF:1,EMPTY1:1,EMPTY2:1,PF:1,EMPTY3:1,CF:1 2)、定义一个压缩型的BCD 码类型;3)、把一个字节分成三部分:02 位、35 位和67 位,每部分可独立存取,它们的初值分别为4,5 和 2;4)、把一个字分割成:01 位、26 位、712 位,其中第一部分的初值位3,第三部分的初值为25。4.9、试求出4.8 题各记录中字段的宽度和屏蔽属性值。4.10、假设变量B1 的偏移量为12H,试求出它们

10、的属性OFFSET、TYPE、LENGTH 和欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!SIZE 的值。B1 DB The programming language is easy,0 W1 DW 10 DUP(1,2),1234 D1 DD 20 DUP(0),P1 PEASON,;结构PEASON 的定义见4.4.2 U1 UNION1 3 DUP();联合UNION1 的定义见4.4.3 OFFSET TYPE LENGTH SIZE B1 12H 1 1 1 W1 33H 2 10 20 D1 5DH 4 20 80 P1 0ADH

11、15 1 15 U1 0CBH 2 3 6 4.11、试用三种方法定义字节变量(或字段名)B1 和字变量(或字段名)W1,它们共享20 个存储单元。1.U1 UNION B1 DB 20 DUP(?)W1 DW 10 DUP(?)U1 ENDS 2.W1 EQU THIS WORD B1 DB 20 DUP(?)3.B1 DB 20 DUP(?)ORG$-20 W1 DW 10 DUP(?)4.12、强制属性操作符会改变变量的定义属性吗?在C 语言中存在类似功能的语句吗?若存在,请举例说明。4.13、假设有题4.10 题中的变量定义,试写出符合要求的地址表达式。1)、取从B1 开始的字母p和第

12、一个m;欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!b1+4,b1+10 2)、访问从W1 开始的第3 个字单元(从序数1 开始计数,第1、第2、)的值为2 的存储单元;w1+10 3)、访问从D1 开始的第10 个双字单元;d1+36 4)、访问从P1 开始的第2 个结构中的字段NO;p1+15 5)、访问从U1 开始的第3 个联合中的字段WW;u1+4 4.14、把下列C 语言程序中的说明性语句改写成等价的汇编语言语句。#define N 200 struct buffer char len1,len2,buffN;buff;int Dat

13、aN;N EQU 200 BUFFER STRUCT LEN1 DB?LEN2 DB?BUFF DB N DUP(?)BUFFER ENDS BUFF BUFFER DATA DW N DUP(?)4.15、简述数值表达式与地址表达式的主要区别。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4.16、计算下列各数值表达式的值。1)、12H AND 78H 0010H 2)、1234 MOD 3+23H 0024H 3)、5467H XOR 12FFH 4698H 4)、A OR 20H 0061H 5)、10 LT 9 0 6)、4567/13+

14、10H 016FH 7)、1234H+89H SHL 1 1346H 8)、8910H SHR 2 AND 506H 0004H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!5.3 习题 5.1、书写正确的MOV 指令,需要符合哪些规定?在32 位 CPU 中,增加了什么指令来克服不同数据类型之间的数据传送?5.2、简述指令MOV BX,1234H、MOV BX,1234和 MOV BX,offset 1234H的功能和它们之间区别。MOV BX,1234H 将通用寄存器BX 的当前值设为1234H MOV BX,1234取出内存地址1234H

15、 的当前值赋予通用寄存器BX MOV BX,offset 1234H 取出内存地址1234H 的偏移量,而地址【1234H】的偏移量就是 1234H 5.3、简述指令MOV BX,Data 和 MOV BX,offset Data 之间的区别。MOV BX,Data 将 DATA 的值赋予通用寄存器BX MOV BX,offset Data 将 data 的偏移地址赋予通用寄存器BX 5.4、选择指令实现下列要求,OPN1 OPN2的含义:把操作数OPN2的值传送给OPN1。1)、EBX EDX MOV EBX,EDX 2)、BX CL MOVSX BX,CL 3)、SI BX 4)、DS A

16、X 5)、AL BH 6)、AL 12H 7)、AX 13AH 8)、CX 0CDH 9)、SI 1000H (假设0CDH 为无符号数)10)、EBX 1200A2H 5.5、PUSHA 指令能把哪些寄存器压栈?它们进栈的顺序是什么?可用什么指令把这些寄存器依次弹出堆栈?POPA 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!5.6、PUSHAD 指令完成什么操作?它与什么操作的作用相反?5.7、在16 位/32 位 CPU 中,标志位寄存器的内容进栈和出栈的指令是什么?5.8、写出下列指令序列中每条指令的执行结果,请在Debug 环境下验证之

17、,并注意各标志位的变化情况。MOV BX,23ABH ADD BL,0ACH MOV AX,23F5H ADD BH,AL SBB BX,AX ADC AX,12H SUB BH,-9 5.9、假定DS=1123H,SS=1400H,BX=0200H,BP=1050H,DI=0400H,SI=0500H,LIST 的偏移量为250H,试确定下面各指令访问内存单元的地址。1)、MOV AL,1234H 1234H 2)、MOV AX,BX 0200H 3)、MOV DI,AL 0400H 4)、MOV 2000H,AL 2000H 5)、MOV AL,BP+DI 1450H 6)、MOV CX,

18、DI 0400H 7)、MOV EDX,BP 1050H 8)、MOV LISTSI,EDX 0750H 9)、MOV CL,LISTBX+SI 0950H 10)、MOV CH,BX+SI 0700H 11)、MOV EAX,BP+200H 1250H 12)、MOV AL,BP+SI+200H 1750H 13)、MOV AL,SI-0100H 0400H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!14)、MOV BX,BX+4 0204H 5.10、用一条指令实现把BX 和 SI 之和传送给CX。CX,BX+SI LEA CX,BX+S

19、I 5.11、试比较下列三组指令的功能。1)、LDS SI,DI 相当于MOV SI,DI MOV DS,DI+2 2)、MOV SI,DI 3)、MOV DS,DI+2 改变了DS 的值,因此随后执行 MOV DS,DI+2 MOV SI,DI 功能与1 同 5.12、标志位CF 有着重要的作用,请简述之,并至少写出三种把CF 置 0 的方法。CLC XOR AX,AX SUB AX,AX 5.13、写一个计算DL 三次方的指令序列,假设幂不超过16 位二进制。MOV AL,DL MUL DL ;(AX)乘积 MOV BX,AX MOV AL,DL CBW ;(AX)扩展值 MUL BX 计

20、算结果放在AX 中 5.14、写出一个指令序列实现:用CL 中数据除BL 中的数据,然后商乘2,最后的结果存入 DX 中。MOV AL,BL 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CBW ;(AX)DIV CL ;商(AL)CBW SHL AX,1 MOV DX,AX 5.15、按下列要求编写指令序列。1)、清除DH 中的最低三位而不改变其它位,结果存入BH 中;AND DH,0F8H MOV BH,DH 2)、把DI 中的最高5 位置1 而不改变其它位;OR DI,0F800H 3)、把AX 中的03 位置1,79 位取反,1315 位

21、置0;OR AX,000FH XOR AX,0380H AND AX,1FFFH 4)、检查BX 中的第2、5 和 9 位中是否有一位为1;AND BX,0224H ;如BX!=0,则至少1 位为1 5)、检查CX 中的第1、6 和 11 位中是否同时为1;AND CX,0842H XOR CX,0842H 6)、检查AX 中的第0、2、9 和 13 位中是否有一位为0;OR AX,0DDFA 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!如 AX!=0FFFFH 则至少一位为0 7)、检查DX 中的第1、4、11 和 14 位中是否同时为0;A

22、ND DX,4812H 如果DX 为 0,说明同时为0 5.16、简述指令AND 和 TEST、NOT 和 NEG 之间的区别。5.17、选择适当的指令实现下列功能。1)、右移DI 三位,并把零移入最高位;MOV CL,3 SHR DI,CL 2)、把AL 左移一位,使0 移入最低一位;SHL AL,1 3)、AL 循环左移三位;MOV CL,3 ROL AL,CL 4)、EDX 带进位位循环右移四位;RCR EDX,4 5)、DX 右移六位,且移位前后的正负性质不变。SAR DX,CL 5.18、判断下列指令的正确性,若某指令是错误的,请说明其错误原因。1)、MOV BL,CX 2)、MOV

23、 DS,SS 3)、MOV BX,DI 4)、MOV AL,BXSI 5)、MOV ES,AL 6)、MOV DS,DX 7)、MOV CS,AX 8)、MOV BX,CS 9)、MOV DS,1230H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!10)、MOVSX DS,AL 11)、XCHG BX,3 12)、POP CS 13)、MOV IP,SI 14)、PUSH CS 15)、PUSH BL 16)、MOV SP,BX 17)、MOV AX,BX+3 18)、MOV AX,BX+3 19)、MOV BX,BX 20)、MOV BH,

24、BL 21)、XCHG ES,AX 22)、LEA AX,BX+SI 23)、MUL 10H 24)、IMUL DX,10H 25)、DIV 10 26)、IDIV DX,10H 27)、SHL AX,CX 28)、SHR BX,CH 29)、ROL BX,20 30)、RCR AX,CL 31)、CMP AX,1234H 32)、CMP 12H,CL 33)、JCXZ next 34)、JEBXZ next (假设标号next 已存在)5.19、方向标志DF 的作用是什么?用于设置或消除该标志位的指令是什么?5.20、串指令用DI 和 SI 寻址哪些内存段中的内存数据?串操作指令用DI 寻址

25、ES 段的内存数据,用SI 寻址DS 段的内存数据 5.21、段间转移和段内转移之间的区别是什么?5.22、SCASB 指令的作用是什么?叙述指令REPE SCASB 指令所完成的功能。5.23、指令REPNE SCASB 结束执行的条件是什么?5.24、REP 前缀的作用是什么?能用指令REP LODSB 读取DS:SI 所指内存中的每个字符来进行处理吗?若不能,请说明原因。5.25、编写指令序列,在字符串LIST 中查寻字符B,若找到,则转向Found,否则,转向 NotFound,假设该字符串含有300 个字符。CLD 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们

26、将竭诚为您提供优质的文档!MOV AX,SEG LIST MOV ES,AX LEA DI,LIST MOV CX,300 MOV AL,42H REPNZ SCASB JZ FOUND JMP NOTFOUND 5.26、编写指令序列,把Source 存储区域中的12 个字节传送到Dest 存储区域内。CLD MOV AX,SEG SOURCE MOV DS,AX LEA SI,SOURCE MOV AX,SEG DEST MOV ES,AX LEA DI,DEST MOV CX,12 REP MOVSB 5.27、设计一个短指令序列,将 32 位数AX:BX 中的8 位 BCD 与 CX:

27、DX 中的8 位 BCD 相加,并把所得结果存入CX:DX 中。1.PUSH AX 2.MOV AX,BX 3.ADD AL,DL 4.DAA 5.MOV DL,AL 6.MOV AL,BH 7.ADC AL,DH 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CWD MOV BX,56 IDIV BX MOV K,AX 3)、for(i=s=0;i 0;i-)s+=i*2;6.4、把下列C 语言的语句改写成等价的汇编语言程序段(不考虑运算过程中的溢出)

28、。If(a 10&c%8=5)a=20+b+;c C&(A+C)B&(B+C)A)/能构成三角形 ELSE /不能构成三角形 6.6、假设有三个无符号字存放在以Buffer 为开始的缓冲区中,编写一个程序把它们从低到高排序好。BUFFER DW 3 DUP(?)MOV AX,BUFFER MOV BX,BUFFER2 MOV CX,BUFFER4 CMP AX,BX JBE NEXT1 XCHG AX,BX NEXT1:CMP BX,CX JBE NEXT3 XCHG BX,CX NEXT2:CMP AX,BX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供

29、优质的文档!JBE NEXT3 XCHG AX,BX NEXT3:MOV BUFFER,AX MOV BUFFER2,BX MOV BUFFER4,CX 6.7、编写一个程序,它把一位十六进制数转化成相应的数字字符或大写字母。答:假设这个十六进制数存储在寄存器AL 中,该数的值必须小于0X10.该数被转换后输出到寄存器BL 中。MOV BL,AL AND BL,0FH CMP BL,0AH JB NEXT1 ADD B1,7H NEXT1:ADD B1,30H 6.8、编写一个程序,它把一个合法的十六字符转化成相应的数值。答:这个字符必须是0-9,A-F,a-f中的某一个,否则它就不是合法的十

30、六进制字符。假设该字符放在al 中,并且已经通过了合法判断。该字符被转换后输出结果将存放在bl 中。MOV BL,AL CMP BL,a JB NEXT1 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!6.9、编写一个程序,它可统计32 数 DX:AX 中二进制位是1 的位数。6.10、编写一个程序,它把CH 和 CL 中的二进制位依次交叉存入AX 中。6.11、编写一个程序,求出从内存单元1000:0000 开始的1024 个字的32 位累加和,并把该值存入程序中的变量Data 中。6.12、假设从变量Buff 开始存放了200 个字,编写一个

31、程序统计出其正数、0 和负数的个数,并把它们分别存入N1、N2 和 N3 中。6.13、用双重循环把下三角乘法表存入从product 开始的45 个字节中。6.14、表示源程序结束的伪指令是什么?在其后所编写的指令在被汇编吗?答:END.在其后编写的任何内容都不会被汇编程序处理。6.15、汇编语言程序一定会从代码段的第一条指令开始执行吗?如果不是,如何指定程序的入口地址?汇编语言程序可以不从代码段的第一条指令开始执行。在伪指令END 后面可以附带一个在程序中已经定义的标号,该标号指明程序的入口地址。6.16、编写一个程序,它把字符串String 两端的空格删除(字符串以0 结束)。6.17、编

32、写一个程序,它把字符串String 中的数字字符删除掉(字符串以0 结束)。6.18、编写一个程序,它把AX 的值以二进制字符串的形式存放在以buff 开始的缓冲区中。6.19、假设有一个以Data 为首地址的字缓冲区,其缓冲区的大小在第一个字中,试编写一个程序,求出该缓冲区数值的最大值和最小值,并分别存入DI 和 SI 中。6.20、编写一个程序片段,把32 位数DX:AX 向左移六位。第七章 7.1、汇编语言的子程序是如何定义的?所使用的关键字有哪些?7.2、为了编写具有良好风格的子程序,一般需要书写哪些重要的说明性信息?7.3、简述调用指令CALL 和转移指令JMP 之间的主要区别。答:

33、call 指令是一种特殊的转移操作。当调用一个子程序时,程序的执行顺序被改变,CPU 将转而执行子程序的指令序列,在这方面,CALL 指令含有转移指令的功能。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!JMP 转移指令是一种“一去不复返”的操作,而当子程序执行结束后,还要求CPU 能转而执行CALL 指令后续的指令,它是一种“有去有回”的操作。7.4、简述段内和段间子程序调用指令CALL 的主要区别。答:子程序的调用指令分为近(near)调用和远(far)调查。近调用即段内子程序调用,远调用即段间子程序调用。如果被调用子程序的属性是近的,那么,

34、CALL 指令将产生一个近调用,它把该指令之后地址的偏移量(用一个来表示)压栈,把被调用子程序入口地址的偏移量送给指令指针寄存器IP 即可实现执行程序的转移。如果被调用子程序的属性是远的,那么,CALL 指令将产生一个远调用。这时,调用指令不仅要把该指令之后地址的偏移量压进栈,而且也要把段寄存器CS 的值压进栈。在些之后,再把被调用子程序入口地址的偏移量和段值分别送给IP 和 CS,这样完成了子程序的远调用操作。7.5、子程序返回指令RET 的功能能否用JMP 指令来模拟,若可以,请用段内子程序的返回加以说明,否则,说明理由。可以 以段内子程序的返回为例 POP AX JMP AX 7.6、子

35、程序返回指令“RET 6”的功能是返回数值“6”给调用程序吗?若不是,那其作用是什么?表示在得到返回地址之后,SP 的值还要另外加6 7.7、在子程序中要使其所用寄存器对调用者是透明的,请举例说明达到其目的的方法。SAMPLE PROC PUSH AX MOV AX,100 POP AX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!RET SAMPLE ENDP 7.8、编写子程序实现下列功能,参数的传递方式可自行决定(假设所有变量都是字类型)。1)、ABS(x)=|x|2)、f(x)=3x2+5x 8 3)、strlen(String)/返回

36、字符串String 的长度,该字符串以0 结束 4)、判断三条边a、b 和 c 能否构成三角形,若能,CF 为 1,否则,CF 为 0 7.9、编写计算将CX 值三次方的子程序,结果也存入CX(不考虑溢出问题)。7.10、编写计算表达式AX=DISI100H 的子程序(不考虑溢出问题)。7.11、编写计算EAX=EAX+EBX+ECX+EDX 的子程序。在计算过程中,若产生进位,则 EDI=1,否则,EDI=0。7.12、在MASM 6.x 编程环境下,简述子程序定义中USE 说明语句的作用是什么?7.13、调用子程序指令CALL 和调用伪指令INVOKE 的主要区别是什么?7.14、在子程序

37、的完全定义形式中,其语言类型所起的作用是什么?可用哪二种方法来设定子程序的语言类型?7.15、如何指定子程序的传递参数是动态的,对动态参数有哪些规定?7.16、编写一个子程序,其功能是把其所有参数数值之和存入AX 中,每个参数都数16位二进制数,但个数不定。7.17、子程序的参数传递有传值和传地址之分,在汇编语言中,如何实现传地址?请举例说明。7.18、在高级语言中,子程序可定义其局部变量,在汇编语言中,能定义其局部变量吗?若能,请举例说明。7.19、使用.REPEAT 和.UNTIL 语句编写一个子程序,其功能是从DS:SI 开始的内存单元中查找是否有与AL 相同的数值。若找不到,CF=0,

38、否则,CF=1,且SI 指向所找到位置。假设查找区域以0 为结束标志。7.20、用.REPEAT 和.UNTILCXZ 语句编写一个子程序,用以在内存缓冲区中填入00H。内存缓冲区的首址及长度分别由DS:SI 和 CX 来确定。7.21、用.WHILE 和.ENDW 语句实现7.16 和 7.17 的功能。7.22、在程序模块中,伪指令PUBLIC 和 EXTRN 的作用是什么?欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.23、在C 语言程序中,存在关键字EXTERN,它与汇编语言中EXTRN 的作用相似吗?7.24、如何创建和维护自己的子

39、程序库?使用子程序库有何好处?8.4 习题 8.1、简述中断和子程序调用之间的主要区别?8.2、为什么要区分IRET 指令与RET 指令?8.3、编写一个子程序,它可显示以0 结尾的字符串。子程序的入口参数DS:DX 为待输出字符串的首地址。8.4、编写一个子程序,用来读入一个键,并在屏幕上按十六进制的形式显示按键的扩展ASCII 码,如果按键为普通字符,则不显示。8.5、编写一个程序,在屏幕的右下角闪烁显示编程者自己的姓名,显示颜色自定。8.6、编写一个把屏幕上显示的字母经过大小写转换后再显示的程序。8.7、编写一个程序,它把屏幕上的数字改位蓝绿色背景的红字。8.8、编写一个控制光标位置和形

40、状的程序,该程序具有以下功能:1)、可用光标移动键、和来移动光标;2)、当光标已在第0 列,且按键时,光标定在上一行的最后一列;若已在屏幕的左上角,则光标不动,且给出响铃;按键时的边界处理类似;3)、当光标在第0 行,且按键时,则光标不动,且给出响铃;按键时的边界处理类似;4)、按Home 或 End 键,则光标移到当前行的行首或行尾;5)、若按下数字或字母键,则把该字符从当前位置依次显示到屏幕顶(在新位置显示字符时,原位置的符号被抹去);6)、按Esc 键,程序结束。8.9、交换例8.5 和 8.6 的画线方法,编写相应的子程序VLine 和 HLine,并验证之。8.10、假设显示器的显示

41、模式设定为12H,编写实现下列功能的程序:1)、在屏幕中间从上到下显示一条明亮的蓝色线,线宽为1 个像素;2)、在屏幕底下横向画一条绿色线,线宽为2 个像素;欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3)、在屏幕上垂直显示16 种颜色,每种颜色宽40 个像素;4)、设定屏幕背景为白色,在屏幕中间画一条青色线,线宽为10 个像素。8.11、对于256 色,320X200 的显示模式需要多少个字节的内存存放一屏信息?8.12、为什么在显示数据时必须关闭鼠标?8.13、编写程序,检测计算机是否已安装了鼠标,并以显示Yes/No 来表示检测结果。8.

42、14、编写程序,显示鼠标的按键,若按左键,显示Left,若按右键,显示Right,按 Esc 键,程序结束。8.15、编写一个程序,在图形模式下,打开鼠标,并显示鼠标的位置。8.16、编写一个程序,显示驱动器C 根目录下所有EXE 文件。提示:用通配符*.exe来查找与此匹配的文件名,找到后,显示之。8.17、编写一个程序,显示驱动器C 根目录下的所有子目录。8.18、编写一个程序,设置指定目录下的所有文件为只读文件。8.19、编写一个程序,创建一个隐含文件Data.TXT。8.20、编写一个程序,把键盘上输入写入文件File.dat 中,类似以下DOS 命令:COPY con File.da

43、t 8.21、使用哪个DOS 功能可读取中断向量地址,哪个DOS 功能可把新的中断服务程序地址设置为指定中断的入口地址。8.22、编写一个程序,在程序开始运行时,把中断向量表保存到程序的数据段中,在程序结束前把数据段中的备份恢复到系统中去。8.23、把下列C 语言的子程序改写成汇编语言子程序。1)、取当前光标的位置,并分别存入变量x 和 y 中 get_cursor(int*x,int*y)union REGS in,out;in.h.ah=3;in.h.bh=0;int86(0 x10,&in,&out);*x=out.h.dh;*y=out.h.dl;2)、把光标设置在(row,col)位

44、置 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!locate(int row,int col)union REGS in,out;in.h.ah=2;in.h.bh=0;in.h.dh=row;in.h.dl=col;int86(0 x10,&in,&out);3)、在(row,col)位置显示字符串string disp_string(int row,int col,char string)struct REGPACK in,out;int x,y;get_cursor(&x,&y);locate(row,col);in.r_ds=FP_SEG(string);in.r_dx=FP_OFF(string);in.r_ax=0 x900;intr(0 x21,&in);locate(x,y);

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁