汇编语言中的循环程序设计实验目的: 掌握循环程序设计的基本方法。主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。 实验内容:(任选其二) 主要实验实例: 1.用多种循环方法实现 1+2+3+…+20 的程序(至少二种方法); 2.将寄存器 AX中的 2#数用 16#形式显示出来; 3.将内存中的数据块中(BUFF 为起始地址)奇数和偶数分别存入以 ADDR1 和ADDR2 开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT 开始的两个字存储单元中; 4.不利用乘法指令实现乘法的程序; 5.对在附加段中的首地址为 LIST 的字数组进行从大到小的排序; 6.对给定数组和给定数,编制程序来确定数组中是否有给定数的值,如有则从数组中删除之; 7.对给定数组和给定数(设数组是有序数组),试将给定数插入给定数组中相应位置。 实验准备: 汇编语言下的循环程序设计基本技术和指令系统。循环程序设计的基本结构和问题表示方法。 实验步骤: (1) 完成源程序设计任务,并准备好测试用例,分析其可能的测试结果; (2) 上机运行和测试所写的程序; (3) 进行实验分析; (4) 编写实验报告。 实验结果: 3.将内存中的数据块中(BUFF 为起始地址)奇数和偶数分别存入以 ADDR1 和ADDR2 开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT 开始的两个字存储单元中; 代码: data segment buff dw 6,35,99,17,80,69,50,33 addr1 dw 8 dup(?) addr2 dw 8 dup(?) result dw 0,0 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,8d mov si,0 ;clear si mov di,0 ;clear di mov bx,0 mov dx,0 L1: test buff[si],0001h je L2 mov ax,buff[si] mov addr2[bx],ax add si,2 add bx,2 inc dl dec cx jmp L1 L2: mov ax,buff[si] mov addr1[di],ax add di,2 add si,2 inc dh dec cx jmp L1 mov si,0 mov byte ptr result[si],dh add si,2 mov byte ptr result[si],dl code ends end start 运行结果: 4.不利用乘法指令实现乘法的程序; 代码: data segment x dw 30d y dw 10d data ends code segment assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov cx,x mov bx,y mov ax,0 L1: add ax,bx loop L1 mov dx,ax mov ah,2 int 21h code ends end start