微机原理采用的是TD集成实验a系统,试验箱也是唐都公司提供的,具体指令和书本上略有差别,书本上为8086微机,试验箱为X86模i式
第一次实验,主要是回忆汇编的相关知识点。
【实验目的】
1.了解int21的各种功能模块的调用和方法
2. 在编译器上可以自己实现编程相关代码
【实验原理】
1.int21各功能调用使用说明
<1>.入口:AH=00H或AH=4CH
功能:程序终止
<2>入口:AH=01H
功能:读键盘输入到AL中并回显
<3>入口:AH=02H,DL=数据
功能:写DL中数据到显示屏
<4>入口:AH=08H
功能:读键盘输入到AL中无回显
<5>入口:AH=09H,DS:DX=字符串首地址字符串以‘$’符号结束
功能:显示字符串,直到遇到‘$’为止
<6>入口:AH=0A,DS:DX=缓冲区首地址,(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入字符数,(DS:DX+2)=输入字符串起始地址
功能:读键盘输入的字符串到DS:DX指定缓冲区中并以回车结束
【实验内容】
1.一开始我们并没有立即进行输入输出的显示实验,先研究了一下前面的冒泡排序算法,没有保留截图,根据给的汇编代码仔细分析了一下程序原理
2.编写实验程序,在显示器上的输出窗口显示A~Z26个英文字母
代码:
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START:MOV CX,001AH ;CX设置为26,作为循环计数器
MOV DL,41H ; ascll码表中41h是A
MOV AL,DL ;低八位存放41h
A1: MOV AH 02H
INT 21H ;DOS功能调用;写DL中数据到显示屏
INC DL ;递增以实现依次输出
PUSH CX
MOV CX,0FFFFH
A2: LOOP A2
POP CX
DEC CX
JNZ A1 ;CX不为0的时候跳转循环
MOV AX,4C00H
INT 21H ;程序终止
CODE
ENDS
END START
实验结果:在显示区域打印出来26个英文字符,代码注释见旁边
[if !supportLists]3. [endif]根据书上给的代码,打印出自己的一段话
代码部分
DATA
SEGMENT
MES1 DB ‘THIS IS JINLEILEI’.’$’ ;以‘$’结尾,读取到‘$’就结束
DATA ENDS ;数据段结束
CODE SEGMENT
ASSUMECS:CODE DS:DATA
START:
MOV AX,DATA
MOVDS,AX
MOV DX,OFFESTMES1
MOV AH ,09H;显示字符段
INT21H
MOVAH,4CH
INT21H
CODE
ENDS
END
START
实验结果:
运行结果【小结或讨论】
微机原理实验由于源代码在实验教程中给出了,其实也是一种考验,看起来实现轻松,但是要想真正好一门这门课程,仔细的研读里面的汇编代码是非常有必要的。汇编语言是大二上的课程了,过去已经很难长时间了,在写后一个程序时候,就漏了“DS:DATA”,而且熟悉dos功能调用中需要的寄存器也是非常有必要的。
网友评论