微机汇编语言程序设计实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、汇编常用软件的使用

一、实验目的

1、熟悉要用到一些DOS命令(CD,DIR,COPY,TYPE,EXIT,RENAME等);

2、熟悉汇编语言的上机过程;

3、熟悉伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET;

4、常用DEBUG命令的使用

5、了解字符、字符串输出的方法和返回DOS系统的方法。

二、实验器材

计算机,汇编相关程序,WA VE6000实验仿真器

三、实验原理

省略

四、实验步骤

省略

五、实验数据

源程序一:

data segment

note db 'hello,world!','$' data ends

code segment

assume cs:code,ds:data begin:mov ax,data

mov ds,ax

mov dx,offset note

mov ah,09h

int 21h

mov ah,4ch

int 21h

code ends

end begin 源程序二:

code segment

assume cs:code start:mov al,32h

mov dl,37h

add dl,al

sub dl,30h

mov ah,2

int 21h

mov ah,4ch

int 21h code ends

end start

六、实验结果分析

1、指出寄存器发生的变化和写出结果。

单步执行源程序二的指令后,寄存器发生的变化如下:

○1.执行mov al,32后,AX=0000→0032;IP=0100→0102;

2.执行mov dl,37后, DX=0000→0037;IP=0102→0104;

○3.执行add dl,al后, DX=0037→0069;IP=0104→0106;

○4.执行sub dl,30后, DX=0069→0039;IP=0106→0109;

○5.执行mov ah,2后,AX=0032→0232;IP=0109→010B;

○6.执行int 21h后, IP=010B→107C;CS=0B1D→00A7;

○7.执行mov ah,4ch后, IP=107C→107D

2、写出实验结果。

源程序一运行之后的结果为:hello,word!

源程序一运行之后的结果为:9

二、字符及字符串的输入输出程序的编写与调试

一、实验目的

省略

二、实验器材

计算机,汇编相关程序,WA VE6000实验仿真器

三、实验原理

省略

四、实验步骤

省略

五、实验数据

写出编写的程序清单。

编写的程序如下:

1、假设DS=2000H,ES=2100H,SS=1500H,请通过实验指出下列指令的寻址方式:

MOV AX,1234

MOV BX,1002

MOV DL,39

ADD AX,BX

INC BX

DEC DL

MOV SI,3

Int 20

2、编写汇编语言程序,要求将键盘输入的一个大写字母用小写字母显示出来。参考程序如下:

code segment

assume cs:code

start:mov ah,01h

int 21h

add al,20h

mov dl,al

mov ah,02h

int 21h

mov ah,4ch

int 21h

code ends

end start

3、编写汇编语言程序,要求先提示用户输入,然后将用户的输入直接显示出来。data segment

msg db 'what is your name:$'

buf db 30,?,30 dup (?)

data ends

code segment

assume cs:code,ds:data

begin:mov ax,data

mov ds,ax

mov dx,offset msg

mov ah,09h

int 21h

mov dx,offset buf

mov ah,0ah

int 21h

mov ah,4ch

int 21h

code ends

end begin

六、实验结果分析

1、分析程序调试过程中出现的错误,是如何解决的。

出现的问题如下:

○1.程序1没有修改各个寄存器的内容,进入Debug状态后直接运行了程序导致失误;

○2.在编译程序2时,无法运行EXE,原因是EXE没有生成,解决方法是将.ASM的文件再次编译,重新执行。

2、写出程序运行的结果。

各个程序运行的结果分别如下:

程序2:Aa

程序3:what is your name:YLM

3、分析执行每个命令后相应寄存器的变化。

执行程序1的各条之后寄存器的变化如下:

○1.执行MOV AX,1234之后,AX=0000→1234;IP=0100→0103;

○2.执行MOV BX,1002之后, BX=0000→1002; IP=0103→0106;

○3.执行MOV DL,39之后, DX=0000→0039; IP=0106→0108;

○4.执行MOV AX,BX之后,AX=1234→2236; IP=0108→010A;

○5.执行INC BX之后, BX=1002→1003; IP=010A→010B;

○6.执行DEC DL之后, DX=0039→0038; IP=010B→010D;

○7.执行MOV SI,3之后, SI=0000→0003; IP=010D→0110;

○8.执行INT 20后, CS=0B1D→00A7; IP=0110→0172;

4、写出寻址方式。

程序1指令的寻址方式如下:MOV AX,1234 立即寻址;MOV BX,1002 立即寻址;MOV DL,39 立即寻址ADD AX,BX寄存器间接寻址INC BX 寄存器寻址

DEC DL 寄存器寻址

MOV SI,3 立即寻址

Int 20 立即寻址

程序2指令的寻址方式如下:

mov ah,01h 立即寻址

int 21h 立即寻址

add al,20h 立即寻址

相关文档
最新文档