微机原理

  • 格式:docx
  • 大小:20.10 KB
  • 文档页数:5

实验一汇编语言程序编制(一)
一、实验目的:
1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。

2、熟悉masm for windows调试环境。

二、实验内容:
1、masm for windows软件的操作步骤;
2、熟悉汇编语言源程序的编制过程;
3、根据错误提示信息进行程序修改,最终能调试运行成功。

三、实验设备
PC机一台、masm for windows 汇编语言集成环境
四、实验准备
1、编写显示笑脸的源程序
2、验证程序运行结果
五、实验步骤
1、输入源程序
首先打开Masm for Windows 集成实验环境,整个伪指令的框架已经做好,只需将需要的代码填写到相应的位置即可,左侧提供帮助和范例,如图1所示。

输入源程序后,直接点击运行按钮,弹出对话框提示要先保存,保存时扩展名应为.asm。

命名为example再次进行运行,如图3所示,弹出DOSBOX窗体,显示运行结果。

如果运行时有错误,则会出现错误描述,指出是什么、错误语句的位置。

2、按照以上步骤输入显示笑脸的源程序,进行汇编、连接程序,最终生成.EXE 文件,执行文件,检查结果。

六.源程序
1.CODES SEGMENT
2.ASSUME CS:CODES
3.START:
4.MOV AH,01H ;置功能号<输入字符并回显>
5.INT 21H ;执行INT21H
6.CMP AL,03H ;是否是字符
7.JZ EXIT ;是则转到EXIT
8.CMP AL,30H ;否则跟30H进行比较
9.JBE START ;不大于30H转到START
10.CMP AL,39H ;大于30H再跟39H比较
11.JA START ;大于39H转到START
12.SUB AL,30H ;减去3OH得到显示字符的个数
13.XOR AH,AH ;AH清零
14.MOV BP,AX ;把显示字符的个数送入BP
15.LOOPER:MOV AH,02H ;置功能号<显示字符>
16.MOV DL,01H ;设置入口参数<显示笑脸>
17.INT 21H ;执行INT21H
18.DEC BP ;使BP减1
19.JNZ LOOPER ;非零转移到LOOPER
20.JMP START ;否则转到START
21.EXIT:MOV AX,4C00H ;带返回码结束
22.INT 21H ;执行INT21H
23.CODES ENDS
24.END START
2.实验中出现的问题及解决方法:
1.转换成exe失败,发现程序写的不对,经过改正,获得成功。

2.标点符号忘了改成英文格式,经过修改,完成实验。

3.可运行但结果不对,经过修改,完场实验。

实验二汇编语言程序编制(二)
一、实验目的:
1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。

2、掌握汇编语言编程技巧。

二、实验内容:
1、masm for windows软件的操作步骤;
2、熟悉汇编语言源程序的编制过程;
3、根据错误提示信息进行程序修改,最终能调试运行成功。

三、实验设备
PC机一台、masm for windows 汇编语言集成环境
四、实验步骤
1.编辑和运行人机对话程序。

2.输入和运行大小写字母转换程序。

五、注意事项
1、当运行程序发生语法错误时,Masm for Windows集成实验环境会自动定位源程序中错误所在行的位置并高亮显示该行,修改好第一条发生错误行后,双击任一条错误信息,该软件定位源程序中与之相对应错误所在行的位置并高亮显示该行,以便改正错误。

实验二:人机对话
DATA SEGMENT
MESG1 DB 0DH,0AH,'What is your name?$'
MESG2 DB'?(Y/N)$'
BUF DB 30
DB?
DB 30 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA;DS表明有数据段
BEG: MOV AX,DATA
MOV DS,AX
AGAIN: MOV AH,9;9号功能调用
MOV DX,OFFSET MESG1;取偏移地址,显示MESG1
INT 21H;声明DOS调用
MOV AH,0AH
MOV DX,OFFSET BUF
INT 21H ;光标闪烁,声明DOS调用
MOV BL,BUF+1 ;实际字符个数放入BL中
MOV BH,0;BH清零
MOV SI,OFFSET BUF+2;偏移地址送入到SI中
MOV BYTE PTR[BX+SI],'$';BS+SI是实际字符末尾,BYTE限定为字符操作
MOV AH,2
MOV DL,0A
INT 21H;换行操作
MOV AH,9;9号功能调用
MOV DX,OFFSET BUF+2
INT 21H;显示BUF+2后的内容
MOV AH,9;9号功能调用
MOV DX,OFFSET MESG2;取偏移地址,显示MESG2的内容
INT 21H
MOV AH,1;1号功能单字符调用
INT 21H
CMP AL,'Y';
JNE AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
实验三:大小写字母转换程序
DATAS SEGMENT ;数据段
buffer db 20 dup(?) ;给buffer分配20个字节的存储空间
message1 db 'please input some characters:$'
message2 db 13,10,'$' ;回车,换行
DATAS ENDS
STACKS SEGMENT ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT ;主程序
ASSUME CS:CODES,DS:DATAS,SS:STACKS
;设置逻辑段的段址
START:
MOV AX,DATAS
MOV DS,AX
lea bx,buffer ;此处输入代码段代码
mov si,0 ;置零
mov di,0 ;置零
mov ah,09h ;dos功能调用显示字符串
lea dx,message1 ;提示语
int 21h
transf:
mov ah,01h ;dos功能调用键盘输入字母
int 21h
cmp al,3 ;判断是ctrl-c吗?3是其ascii码
jz exit
cmp al,0dh ;判断是回车吗?13其ascii码
jz print
cmp al,61h ;判断的大写还是小写?
jnb store ;小写转换储存
mov [bx+si],al ;大写直接储存
inc si
jmp transf
print:
mov cx,si ;设置loop次数
lea dx,message2 ;回车,换行
mov ah,09
int 21h
displ:
mov dl,[bx+di]
mov ah,02h
int 21h
inc di
loop displ
jmp exit
store:sub al,20h
mov [bx+si],al
inc si
jmp transf
exit:
MOV AH,4CH
INT 21H
CODES ENDS
END START
六.实验中出现的问题及解决方法:
1.$两边忘加’’,加上之后调试成功。

2. SEGMENT多输入一个S,导致很多错误,只要在SEGMENTS改为SEGMENT 即可调试通过。

七.实验总结
1、掌握了编写汇编源程序的基本格式。

2、熟悉了汇编语言上机环境,masm for windows软件的操作步骤。

3这次微机原理实验要用汇编语言来实现大小写字母的转换,所以自己一开始感觉这会非常的简单。

直到真正的理解相关原理,要编写程序实现的时候,才发现,自己对汇编程序的了解确实还不够,尤其是编程方面的能力有待提高。