微机原理第一篇

2019-02-19  本文已影响0人  吃茶的武士

微机原理采用的是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功能调用中需要的寄存器也是非常有必要的。

上一篇 下一篇

猜你喜欢

热点阅读