当前位置:首页 > 汇编语言程序设计实验指导书
《汇编语言》实验指导书 二、实验内容
1、编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种方法的程序清单:
实验程序参考清单: DATA SEGMENT
ORG 1000H
DB 100 DUP(‘A’) ORG 2000H DB 100 DUP(‘B’) DATA ENDS
CODE SEGMENT ASSUME Ds:DATA,ES:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SI,1000H MOV DI,2000H MOV CX,100 CLD REP MOVSB MOV AH,4CH INT 21H CODE ENDS END START
2、在数据段变量名为A的数据区内有10个字符,编程实现将这10个字符以相反次序传送到附加段变量名为B的内存区中。
源程序已部分给出,请将程序补充完整,并调试运行结果。 data segment
A db '1234567890' n equ $-a
B db n dup(?) data ends code segment
assume cs:code,ds:data,es:data start:
mov ax,data mov ds,ax mov es,ax lea si,a lea di,b add di, mov cx, move:
-
12
《汇编语言》实验指导书 mov al,[si]
mov es:[di],al inc si
loop move mov ah,4ch int 21h code ends end start
3、对string1和string2两个字符串进行比较,若串相同,在result单元中置0,否则置-1。以下是部分程序,请将程序补充完整,并调试运行程序。
┊
mov si,offset string1 mov di,offset string2 mov cx,count cld
again: cmpsb ;比较两个字符 jnz unmat ;有不同字符,转移 dec cx jnz again ;进行下一个字符比较 mov al,0 ;字符串相等,设置00h jmp output ;转向output unmat: mov al,0ffh ;设置ffh output: mov result,al ;
┊
4、以下是在一字符串中查找某一字符的程序,若找到了,将0送入BX寄存器中;若未找到,将-1送入BX寄存器中。程序中有空缺的地方,请补充完整并调试运行。 data segment
string db 'howareyou?' count equ $-string data ends code segment
assume cs:code,ds:data,es:data start:
mov ax,data mov ds,ax
mov di,offset string mov al,20h mov cx,count cld scasb jz found mov bx,-1
- 13
《汇编语言》实验指导书 jmp exit
found: mov bx,0
exit: mov ah,4ch int 21h code ends
end start
5、数据段开始区域中,连续存放着10个无符号数,编程序找出这10个数中最大的一个数,并将其存到该数据区的后面。 五、实验要求:
1、写出以上程序的源程序清单。
2、写出观察实验结果的DEBUG调试命令。 五.实验报告要求
1、列出程序清单和执行结果;
2、分析实验中所遇到的一些问题。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
实验6 DOS中断调用程序设计
一.实验目的
1、了解DOS中断功能调用的概念;
2、掌握使用INT 21H中断的1#、2#、9#和10#功能调用。 二.实验内容与要求
1、从键盘键入10个字符,然后以与键入相反的顺序输出。 源程序如下: DATA SEGMENT
info1 db 0dh,0ah,'input string: $' info2 db 0dh,0ah,'output string: $' STR DB 20 dup(?) DATA ENDS
STACK SEGMENT STACK DB 100 DUP(0) STACK ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK BEGIN: MOV AX,DATA MOV DS,AX xor si,si xor cx,cx lea dx,info1 mov ah,9 int 21h next: mov ah,1
-
14
《汇编语言》实验指导书 int 21h
test al,'0' jz disp1
mov str[si],al inc si inc cx jmp next disp1:
LEA DX,info2 MOV AH,9 INT 21H
disp2: mov dl,str[si] mov ah,2 int 21h dec si
loop disp2 mov dl,str[si] int 21h MOV AH,4CH INT 21H CODE ENDS
END BEGIN
执行以上程序,观察执行结果。
2、从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是,请输出“这不是一个大写字母”的英文信息(要求:能连续输入)。
3、编程实现查找子串。要求从键盘输入两个不等的字符串,查找长串中是否包含短串,若包含,则输出“Y”,否则输出“N”。(字符串自行定义)
三.实验报告要求
1、程序说明。说明程序的功能、结构。
2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果,并给出程序流程图。 4、分析实验结果及所遇到的问题的解决方法。 5、体会和意见。
实验7 子程序设计
一.实验目的
1、掌握主程序与子程序之间的调用关系及其调用方法; 2、掌握子程序的调用与返回的方法;
3、掌握CALL指令的使用方法。掌握子程序设计、编写、调试和运行的方法; 4、了解子程序的嵌套与递归。 5、了解参数传递的三种不同方法
- 15
共分享92篇相关文档