【2017年整理】从键盘上输入一串字符到输入缓冲区

上传人:爱****1 文档编号:1002950 上传时间:2017-05-25 格式:DOC 页数:13 大小:105KB
返回 下载 相关 举报
【2017年整理】从键盘上输入一串字符到输入缓冲区_第1页
第1页 / 共13页
【2017年整理】从键盘上输入一串字符到输入缓冲区_第2页
第2页 / 共13页
【2017年整理】从键盘上输入一串字符到输入缓冲区_第3页
第3页 / 共13页
【2017年整理】从键盘上输入一串字符到输入缓冲区_第4页
第4页 / 共13页
【2017年整理】从键盘上输入一串字符到输入缓冲区_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《【2017年整理】从键盘上输入一串字符到输入缓冲区》由会员分享,可在线阅读,更多相关《【2017年整理】从键盘上输入一串字符到输入缓冲区(13页珍藏版)》请在金锄头文库上搜索。

1、12.以下宏定义的功能是将一位十六进制数转换为 ASCII 码,请在空白处填入恰当内容,使程序完整。HEXTOA _MACRO_AND AL,0FHCMP AL, _9_JNA HEXTOA1ADD AL,7HHEXTOA1: ADD AL, _30H_ENDM18. 8086 最多可处理_256_种中断,对每一个中断都设置一个_中断码类型_。198086 CPU 有两种外部中断请求线,它们分别是_NMI_和_INTR(可屏蔽中断请求信号)_。20C PU 与 外 设 之 间 的 数 据 传 送 方 式 有 _无条件传送_ _、 _查询方式传送_、 _中断方式传送_ _和 DMA 方式传送。2

2、9汇编语句中,语句标号具备的三种属性分别是_段属性_、_偏移量属性_、_距离属性_;变量具备的三种属性分别是_段属性_、_偏移量属性_、_类型属性_。31. 8086CPU 的标志寄存器共有 9 个有效标志位,其中有 6 个状态标志位,分别是_进位标志位(CF)_、_辅助进位标志位(AF)_、_符号标志位(SF)_、_零标志位(ZF)_、_溢出标志位(OF)_、_奇偶标志位(PF)_。32已知 X=-1011011B,则 X 的反码为_10100100B_,X 的补码为_10100101B_。1.下述程序执行后,应将LIST数组中的最大值存入MAX 单元,数组元素为无符号字数据,数据个数在CN

3、T单元中。现已知程序有错,请改正,使之完成预定功能。1)DSEG SEGMENT2)LIST DW 1,200,30,400,0,7,40003) CNT DB 74) MAX DW?(问号)5) DSEG ENDS6) CSEG SEGMENT7) ASSUME DS:DSEGDS:CODE8) FMAX: MOV DX,DSEG9) MOV DS,AX10) LEA SI,LIST11) MOV CX,CNT12) CLD13) LODSW14) DEC CX15) CMP AL,SI16) JLE SMALL17) LODS W18) SMALL: INC SI19) INC SI20)

4、 DEC CX21) LOOP AGAIN22) MOV MAX,SI23) MOV AL,4CH24) INT 21H25) CSEG END26) END START (1)3 行,数据定义伪指令 DB 改为 DW(2)8 行,DX 改为 AX(3)15 行,循环入口,加标号 AGAIN,即将本行改为:AGAIN:CMP AX,SI(4)16 行,JLE 改为 JAE(5)17 行,LODSW 改为 MOV AX,SI(6)20 行,去掉该行语句(7)22 行,SI 改为 AX(8)23 行,AL 改为 AH(9)25 行,END 改为 ENDS(10)26 行,START 改为程序入口标

5、号 FMAX2.下面的程序是将内存单元一字节数据乘以10放回单元的程序,找出错误并改正。DATA SEGMENTDA DW 34DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET DAMOV AL,SIMUL 10MOV SI,AXMOV AH,4CHINT 21HCODE ENDSEND START 解答:MOV AL,SI 改为 MOV AL,BYTE PTR SIMUL 10 改为 MOV BL,10MUL BL1从键盘上输入一串字符到输入缓冲区,然后将输入的字符串在显示器

6、上以相反的顺序显示。DATA SEGMENTINFO1 DB 0DH,0AH, INPUT STRING:INFO2 DB 0DH,0AH, OUTPUT STRING:BUFA DB 81DB ?(问号)DB 81 DUP(?) (问号)BUFB DB 81 DUP(0)DATA ENDSSTACK SEGMENTDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA ,SS:STACK,CS :CODESTART: MOV AX,DATAMOV DS,AXLEA DX, INFO1MOV AH,9 ; 9号调用,显示输入提示信息INT 21HLE

7、A DX,BUFAMOV AH,10 ; 10号调用,键盘输入字符串到缓BUFAINT 21HLEA SI,BUFA+1 MOV CH,0 ; 取字符长度CXMOV CL,SIADD SI,CX ; SI 指向字符串尾部LEA DI,BUFB ;DI 指向字符串变量 BUFBNEXT:MOV AL ,SIMOV DI,ALDEC SIINC DILOOP NEXTMOV BYTE PTR DI, (钱字符号)LEA DX,INFO2MOV AH,9 ;INT 21HLEA DX,BUFBMOV AH,9 ;反向显示字符串INT 21HMOV AH,4CHINT 21HCODE ENDSEND

8、START2编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。getkey: mov ah, 1 ;从键盘输入,出口:al 存键值 int 21h cmp al, a ;判键值是小写字母? jb getkay cmp al, z ja getkay sub al,20h ;是小写字母转换为大写字母 mov ah, 09h ;显示 int 21h3请分别用一条汇编语言指令完成如下功能:(1)把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器。(2)用寄存器 BX 和 SI 的基址变址寻址方式把存储器的一个字节与 AL 寄存器的内容相加,并把结果送到 AL 中。(3)用

9、BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和 CX 寄存器的内容相加,并把结果送回存储器中。(4)用位移量为0520H 的直接寻址方式把存储器中的一个字与数3412H 相加,并把结果送回该存储单元中。(5)把数0A0H 与 AL 寄存器的内容相加,并把结果送回 AL 中。答案:(1)ADD DX,BX(2)ADD AL,BX+SI(3)ADD BX+0B2H,CX(4)ADD WORD PTR 0520H,3412H(5)ADD AL,0A0H1、 按题意写出合适的指令语句,每小题只能使用一条指令(1)将首地址为 ARRAY 的字数组的第3个字设置为0。(2)用 BX 和

10、SI 的基址变址寻址,将存储器中的一个字传送到 AX 寄存器中。(3)取数组 ARRAY 的起始地址到 BX 寄存器中。(4)将 AX 寄存器的最高四位清0。(5)将 AX 的内容,减去0520H 和上次运算的借位。(1)MOV WORD PTR ARRAY4,0(1分)(2)MOV AX, BX+SI (1分)(3)LEA BX, ARRAY 或 MOV BX, OFFSET ARRAY(1分)(4)AND AX, 0FFFH 或 AND DH, 0FH(1分)(5)SBB AX,0520H(1分)2设在内存单元 SQTAB 首址开始存放了015的平方数表。要求用直接查表法编一程序,求出 A

11、 单元中给定数(=15的平方值送 B 单元保存。答:DATA SEGMENTSQTAB DB 0,1,4,9,16,25,36,49,64,81DB 100,121,144,169,196,225A DB 12B DB?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARPUSH DXXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET SQTABMOV AL,AXLATMOV B,ALRETSTART ENDPCODE ENDSEND START1在表 TABLE 处存放着 N 个无符

12、号字节数,求表中前10个字节数的总和并保存在 AX 寄存器中。如果总和值超过 AX 寄存器的容量,则置 AX 寄存器内容不变。请在程序中的空格处填入适当指令使其完整。LEA BX,TABLE (2)MOV CX,10 JC END0MOV SUM,AX DON:INC BXMEXT:(1) (3)ADC AH,0 ENDO:HLTJNC DON答:(1) ADD AL, BX(2) MOV AX, SUM(3) LOOP NEXT2BEG 为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。MOV CX,32

13、HLEA SI,BEGMOV DI,SI(1)DON:MOV AL,SI(2)MOV SI,AL(3)DEC DILOOP DONHLT答:(1) ADD DI, 99(2) XCHG AL, DI(3) INC SI1、己知宏指令为:SHIFT MACRO RR,COUNTMOV AX,COUNTIF RR LE 64MOV CL,3SHR AX,CLIF RR LT 16MOV CL,6SHR AX,CLENDIFENDIFENDM宏调用为:SHIFT 15,7FFFHSHIFT 80,9FFFH写出宏扩展后的等效源程序段。【解析:MOV AX,7FFFHMOV CL,3SHR AX,CL

14、MOV CL,6SHR AX,CLMOV AX,9FFFH】2执行下列程序段后,回答问题。ORG 1221H MOV BX,OFFSET NUMNUM DW 12H MOV CL,BYTE PTR NUM+1 MOV CH,TYPE NUMMOV AX,NUM HLT答:(AX)=0012H (BX)=1221H (CX)=0200H1、X,Y 分别位32位带符号二进制数,Z 为8位带符号二进制数,它们分别存放在 X,Y,Z 存储单元中,编写程序段实现 X = X + Y + Z - 100。 (不考虑溢出)mov ax,x (2分)mov dx,x+2 add ax,y (2分)adc dx

15、,y+2mov cx,axmov bx,dxmov al,z (2分)cbwcwdadd ax,cx (2分)adc dx,bxsub ax,100 (2 分)sbb dx,0mov x,axmov x+2,dx2、简述宏和子程序的区别宏调用在汇编时进行宏展开,不需要返回,不会减小目标代码的长度,不会改变执行速度;子程序通过 CALL 调用,RET 返回,能减小目标代码的长度,会使执行速度变慢。 当程序段较短或要求较快执行时,选用宏;当程序段较长或为减小目标代码时,选用子程序。(5分)3、编写一个完整程序,实现从键盘接收一个字符串,并然后将其中大写字母改为小写字母,最后显示出来。要求使用字符串的接

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号