汇编语言循环结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。验证正确

相关文档
最新文档