汇编语言循环结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五循环结构程序设计
一、实验目的
熟悉程序框架;理解单重循环与多重循环程序的结构及执行过程;掌握循环控制指令的用法,会使用数据串操作指令编程;熟练掌握循环结构程序的设计方法和利用设置断点调试程序的方法。
二、示例
阅读下面程序框架,并加以注释
DATA_SEG SEGMENT AT 0E000H
ARRAY_B LABEL BYTE
ARRAY_W DW50 DUP (?)
DATA_SEG ENDS
;以上为定义数据段
STACK_SEG SEGMENT PARA STACK ‘STACK’
DW100H DUP (?)
TOS LABEL WORD
STACK_SEG ENDS
;以上为定义堆栈段
CODE_SEG SEGMENT
MAIN PROC FAR
ASSUME CS: CODE_SEG, DS: DATA_SEG, SS: STACK_SEG
ORG1000H
START: MOV AX, STACK_SEG
MOV SS, AX
;给SS赋值
MOV SP, OFFSET TOS
;给SP赋值
PUSH DS
临时保存DS的值
SUB AX, AX
PUSH AX
MOV AX, DATA_SEG
MOV DS, AX
;给DS赋值
┇
;程序段
RET
MAIN ENDP
CODE_SEG ENDS
;以上定义代码段
END START
三、实验题
1 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
2试编制一个程序把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中。例如,当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H。
四、实验报告
写出程序清单、加注释;记录执行结果。
1 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
程序代码:
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,07H
INT 21H
SUB AL,1 ;将AL数-1,得到该字母的前导字符
MOV DL,AL
MOV AH,02H ;将输入的字符放入AH
INT 21H
ADD AL,1 ;将AL数+1,得到原字符
MOV DL,AL
MOV AH,02H
INT 21H
ADD AL,1 ;将AL数再+1,得到该字母的后续字符MOV DL,AL
MOV AH,02H
INT 21H
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
运行结果:
从键盘上输入小写字母r,返回qrs三个字符,验证正确
从键盘上输入小写字母b,得到abc三个字符
2试编制一个程序把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中。例如,当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H。
程序代码:
DATAS SEGMENT
MEM DB 4 DUP(?)
DATAS ENDS
;以上定义数据段
CODES SEGMENT;代码段
ASSUME CS:CODES,DS:DATAS
MAIN PROC FAR
MOV AX,DATAS ;初始化
MOV DS,AX ;将ax值赋数据段
MOV AX,2A49H ;给AX赋值
MOV CX,4
MOV DI,3
L1:
PUSH CX ;将cx的值压入栈底保存
MOV CL,4 ;设置循环次数=4
ROL AX,CL ;不含cf循环左移4次
MOV BX,AX
AND BX,0FH ; 取低四位
ADD BX,30H ;将其转换为相对的ASCII码
CMP BX,3AH ;比较判断是否为0~9
JB L2 ;跳转
ADD BX,7
L2:
MOV MEM[DI],BL ;转换的ASCII码送入MEM中DEC DI ;di减1
POP CX ;从堆栈弹出cx
LOOP L1 ;循环
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
;以上定义代码段
END MAIN
运行结果:
用d命令查看MEM中的4个字节内容为39H, 34H, 41H, 32H。验证正确