2004年自学考试汇编语言模拟试题(五) | |
---|---|
http://www.sina.com.cn 2004/10/21 13:57 华夏大地教育网 | |
五,编制程序题(第1小题6分,第2小题14分,共20分) 1.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答:1.BEGIN:MOV AH,1 INT 21H CMP AL,’a’ JB STOP CMP AL,’z’ JA STOP SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP:RET [解析]1)该程序设计的主体应是一个循环——当输入字符的是小写字母(a ~ z)时,就将其转换为大写字母来显示,此过程循环进行,直到当输入的不是小写字母时,程序结束。 2)输入一个字符的可使用DOS的1号功能实现: MOV AH, 1 INT 21H 该DOS调用执行完后,会将输入的字符的ASCII码值送入AL寄存器。 3)判断输入的是否为小写字母(a ~ z)的方法: CMP AL, ‘a’ JB STOP ;不是小写字母时,转STOP CMP AL, ‘z’ JA STOP ;不是小写字母时,转STOP … ;是小写字母时,将其转换为大写显示 STOP: RET ;不是小写字母时,程序结束 4)小写字母比大写字母的ASCII码值大20H,因此指令 SUB AL, 20H,将使AL中的内容变为大写字母的ASCII码值。 5)输出一个字符的可使用DOS的2号功能实现: MOV DL, AL MOV AH, 2 INT 21H 2.设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(<=15=的平方值送B单元保存。 答:DATA SEGMENT SQTAB DB 0,1,4,9,16,25,36,49,64,81 DB 100,121,144,169,196,225 A DB 12 B DB? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DX XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,OFFSET SQTAB MOV AL,A XLAT MOV B,AL RET START ENDP CODE ENDS END START [解析]1)根据题目的要求,应首先建立0~15的平方数表以及A和B单元: SQTAB DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ;平方数表 DB 100, 121, 144, 169, 196, 225 A DB 12 ;给定数(<=15) B DB ? ;存放A中数的平方值的结果单元 2)A中给定的数恰好是该数平方值在平方数表中的相对位置,因此,可通过换码指令XLAT来实现从表中求平方值: MOV BX, OFFSET SQTAB MOV AL, A XLAT |