教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

汇编语言程序设计(4)

来源:网络收集 时间:2026-05-26
导读: MOV CX,CN LP: MOV AL,[SI] TEST AL,80H JZ NEXT INC DL NEXT: INC SI LOOP LP MOV COUNT,DL MOV AH,4CH INT 21H CODE ENDS END START 7、从键盘输入一个大写英文字母,将其转换为小写字母并显示出来,要求输

MOV CX,CN LP: MOV AL,[SI] TEST AL,80H JZ NEXT INC DL NEXT: INC SI LOOP LP

MOV COUNT,DL MOV AH,4CH INT 21H CODE ENDS END START

7、从键盘输入一个大写英文字母,将其转换为小写字母并显示出来,要求输入其它字符时,能够有出错提示信息。 【解答】

DATA SEGMENT

MESS DB 'INPUP ERROR!',0AH,0DH,'$' DATA ENDS CODE SEGMENT

ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX

MOV AH,01H INT 21H CMP AL,'A' JB ERR CMP AL,'Z' JA ERR ADD AL,20H MOV DL,AL MOV AH,02H INT 21H JMP EXIT

ERR: MOV DX,OFFSET MESS MOV AH,09H INT 21H EXIT: MOV AH,02H INT 21H CODE ENDS END START

8、试定义将一位十六进制数转换为ASCII码的宏指令。 【解答】

HEXTOA MACRO AND AL,0FH

CMP AL,9 JNA HEXTOA1 ADD AL,7H

HEXTOA1:ADD AL,30H ENDM

9、变量X,Y为二进制的ASCII码串,请编程序计算并显示出下式的值:Z←X+(Y-5)

答案:求一个代数式(或表达式)的值,一般的做法是根据运算符的优先级顺序进行计算,如上式先计算(Y-15),再与X相加,将其结果存放在Z变量中,最后可用DOS功能调用将结果显示出来。 TITLE ASCDAT(COM) add & sub ASCII numbers CODESG SEGMENT

ASSUME CS:CODESG,DS:CODESG ORG 100H

BEGIN:JMP SHORT MAIN ;---------------------------------------- X DB '60'; ASCII number Y DB '24' Z DB '000','$'

;---------------------------------------- MAIN PROC NEAR

MOV DX,CODESG ;initialize DS

MOV DS,DX

MOV AH,0 ;clear AH

MOV AL,Y+1 ;load Y’s low_order SUB AL,05 ;sub low_order digit AAS ;adjust for sub

MOV MOV SBB AAS XCHG ADD AAA XCHG ADC AAA MOV MOV OR OR OR MOV MOV Z+2,AL ;put result in Z's low_order AL,Y ;load Y’s high_order AL,01 ;sub digit with carry ;adjust for sub

AL,Z+2 ;exchange lower_order in AL AL,X+1 ;add lower_order in AL ;adjust for add

AL,Z+2 ;exchange high_order in AL AL,X ;add high_order digit ;adjust for add

Z+1,AL ;store high_order result Z,AH ;store carry Z,30H ;Z string should be Z+1,30H ;ASCII string Z+1,30H

DX,OFFSET Z ;offset of string Z AH,9 ;display string funtion

INT 21H ;call DOS MOV AX,4C00h ;return INT 21H MAIN ENDP

;------------------------------------------- CODESG ENDS END BEGIN

10、请编写一程序,从附加段中一个未排序的字数组UNORDLST中,找出最大数和最小数分别存放在AX和BX寄存器中。

答案:要找出数组中的最大数和最小数,可以取数组中的某一个数作为比较的基数,然后用数组中再与其他数一一比较,以此得出最终的最小数。同样如果程序发现一个数大于这个基数,那么它就是一个新的最大数。依法泡制得出最大数(此种方法称为冒泡排序)。数组中的每个数逐一进行这种比较操作,所以可采用循环程序结构,控制循环的条件就是数组中数的个数,如果数组中有M个数,则循环次数为M-1。 TITLE MINMAX—

;Find the max and min words in an unordered ; list in the extra segment ESEG SEGMENT

UNORDLST DW 50 DUP(?) COUNT EQU ($-UNORDLST)/2 ESEG ENDS

…… 此处隐藏:273字,全部文档内容请下载后查看。喜欢就下载吧 ……
汇编语言程序设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/442698.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)