微机汇编语言程序设计实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 立即寻址