汇编语言 实验报告
实验名称: 姓 名: 学 号: 班 级:
循环结构程序设计
一、实验内容
1. 用多种循环方法实现1+2+3+…+20的程序(至少二种方法);
2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
4、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。
二、实验目的
1. 掌握循环程序的结构。
2. 掌握循环程序的设计、编写及调试方法。
3. 掌握循环程序设计的基本方法。主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。
三、实验结果
1、将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT开始的两个字存储单元中。
实验代码:(1.ASM 1.OBJ 1.EXE) 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 mov di,0 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
运行结果如下:
2、不利用乘法指令实现乘法的程序 代码如下:(2.ASM 2.OBJ 2.EXE) 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
运行结果如下:
3、用多种循环方法实现1+2+3+…+20的程序(至少二种方法) 代码1:(31.ASM 31.OBJ 31.EXE) DATA SEGMENT X DW 0D Y DW 20D DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX MOV BX,X MOV CX,Y MOV AX,0 L1:
INC BX ADD AX,BX LOOP L1 MOV DX,AX MOV AH,2 INT 21H CODE ENDS END START 运行结果1如下:(结果存于DX寄存器中)