您的位置:澳门新葡8455最新网站 > 澳门新葡8455最新网站 > x86汇编完成朝鲜语打字演习软件,系统功用调用

x86汇编完成朝鲜语打字演习软件,系统功用调用

发布时间:2019-10-05 16:04编辑:澳门新葡8455最新网站浏览(185)

    一、实验指标

    目的:

    编写制定阿拉伯语打字练习软件,综合复习字符输入和浮现,置光标、开窗口、颜色设置等荧屏功效;精晓分支程序中字符比较及总计的顺序设计,循环及排序程序设计艺术;参与中断调用的计时作用。通过上述综合性陶冶,进一步深化对汇编语言的明白和增加程序设计技术。

    1、熟识操作系统的种类机能调用。

    内容:

    1.显示器出现打字练习菜单(格式自定,字体、字号、颜色)

    2.菜单项目为4项:照打,覆盖打,排行,退出

    2、通晓用C语言完毕系统机能调用的法子和步骤。

    程序框图:

    图片 1

    程序框图

    3、精晓运用10H号功用调用(BIOS的彰显I/O效率调用)来兑现对荧屏的操作与调整。

    代码落成

    ```

    data segment

    menu  db 0ah,0dh,' Input number to chose your function'

    db 0ah,0dh,'       1.Follow Typing'

    db 0ah,0dh,'       2.Cover Typing'

    ; db 0ah,0dh,'       3.Ranking'

    db 0ah,0dh,'       3.Exit'

    db 0ah,0dh,'Please input your select:$'

    mess1 db 0ah,0dh,' This is the Follow Typing page.'

    db 0ah,0dh,'     Please input accordance with those word!$'

    mess2 db 0ah,0dh,' This is the Cover Typing page.'

    db 0ah,0dh,'     Please input accordance with those word!'

    db 0ah,0dh,' (Yellow is right, Red is wrong!)$'

    mess3 db 0ah,0dh,'This is third select$'

    mess4 db 0ah,0dh,' Thank you for your use!$'

    mess5 db 0ah,0dh,'Your right number is:$'

    endline db 0ah,0dh,'$'

    mess  db 255,?,255 dup(?)

    text  db 'New strides have been taken in strengthening national defense and army building.$'

    right db '0$'

    sum  db '/80$'

    num  db 0

    data ends

    code segment

    assume cs:code,ds:data

    start:

    mov ax,data

    mov ds,ax

    let0:

    mov ax,0

    mov dx,offset menu ;展现菜单

    mov ah,9

    int 21h

    mov ah,1 ;输入选取

    int 21h

    cmp al,'1' ;输入为1,跳转到照打分界面

    jz prog1

    cmp al,'2' ;输入为2,跳转到覆盖打分界面

    jz prog2

    cmp al,'3' ;输入为3,跳转到排行分界面

    jz prog3

    jmp prog4 ;输入不为1或2或3,退出程序

    prog1:

    jmp real_prog1

    prog2:

    jmp real_prog2

    prog3:

    jmp real_prog3

    prog4:

    jmp real_prog4

    real_prog1: ;照打分界面

    mov ax,0003h ;清屏

    int 10h

    mov dx,offset mess1 ;显示提醒消息

    mov ah,9

    int 21h

    mov dx,offset endline ;换行

    int 21h

    mov dx,offset endline ;换行

    int 21h

    mov dx,offset text ;突显小说

    mov ah,9

    int 21h

    mov dx,offset endline ;换行

    int 21h

    mov dx,offset mess ;输入串

    mov ah,10

    int 21h

    ;输入完结,最初打开巡回相比

    mov ax,0

    mov di,0 ;存款和储蓄正确个数

    mov cl,mess+1 ;输入的假名个数,即循环的次数

    mov bx,2 ;第二个字符的单元地方

    let1:

    mov dl,text[bx-2]

    cmp mess[bx],dl ;剖断是不是输入准确

    jz let2 ;输入正确 跳到let2

    jmp out1 ;跳到国有出口 out1

    let2: ;正确数+1

    add ax,1

    add di,1

    out1:

    dec cl ;循环次数-1

    inc bx

    cmp cl,0

    jnz let1

    jz out2

    out2: ;检查停止,输出结果

    mov dx,offset mess5

    mov ah,9

    int 21h

    ;输出准确个数

    mov ax,di

    mov bl,10

    div bl

    add ah,'0'

    mov right,ah

    add al,'0'

    mov dl,al

    mov ah,2

    int 21h

    mov dl,right

    mov ah,2

    int 21h

    mov right,0 ;重置right为0

    mov di,0

    mov dx,offset sum

    mov ah,9

    int 21h

    jmp let0 ;再次来到选取菜单

    real_prog2: ;覆盖打分界面

    mov dx,offset mess2

    mov ah,9

    int 21h

    mov ax,0003h ;清屏

    int 10h

    ;置展现光标

    mov ah,2

    mov dh,4

    mov dl,0

    mov bh,0

    int 10h

    ;显示串

    mov dx,offset mess2

    mov ah,9

    int 21h

    mov dx,offset endline ;换行

    int 21h

    mov dx,offset endline ;换行

    int 21h

    mov dx,offset text

    mov ah,9

    int 21h

    ;置输入光标

    mov ah,2

    mov dh,9

    mov dl,0

    int 10h

    mov si,80 ;循环次数

    mov bx,0 ;第二个字符的单元地方

    mov di,0 ;正确个数

    mov num,0 ;显示列的职位

    prog2_let1:

    ;输入字符

    mov ah,1

    int 21h

    mov dl,text[bx]

    cmp al,0DH ;推断是不是输入回车

    jz prog2_out2

    cmp al,dl ;判别是还是不是输入无误

    jz prog2_let2 ;输入准确 跳到let2

    cmp al,dl

    jnz prog2_let3 ;输入错误,跳到let3

    jmp prog2_out1 ;跳到公共出口out1

    prog2_let2:

    add di,1 ;正确数+1

    ;输入准确,改变为香艳

    mov ah,06h

    mov al,0

    mov bh,0eh

    mov ch,8

    mov cl,num

    mov dh,9

    mov dl,num

    int 10h

    ;置展现光标

    mov ah,2

    mov dh,9

    mov dl,num

    mov bh,0

    int 10h

    mov dl,text[bx]

    mov ah,2

    int 21h

    jmp prog2_out1 ;跳到公共出口out1

    prog2_let3:

    ;输入错误,响铃

    mov ah,2

    mov dl,7

    int 21h

    ;输入错误,改换为革命

    mov ah,06h

    mov al,0

    mov bh,04h

    mov ch,8

    mov cl,num

    mov dh,9

    mov dl,num

    int 10h

    ;置展现光标

    mov ah,2

    mov dh,9

    mov dl,num

    mov bh,0

    int 10h

    mov dl,text[bx]

    mov ah,2

    int 21h

    jmp prog2_out1 ;跳到集体出口out1

    prog2_out1:

    dec si ;循环次数-1

    inc bx

    inc num

    cmp si,0

    jnz jump_prog2_let1 ;si≠0,继续循环

    jz prog2_out2

    jump_prog2_let1:

    jmp prog2_let1

    prog2_out2: ;循环甘休,输出结果

    mov dx,offset mess5

    mov ah,9

    int 21h

    ;输出正确个数

    mov ax,di

    mov bl,10

    div bl

    add ah,'0'

    mov right,ah

    ;add al,74

    add al,'0'

    mov dl,al

    mov ah,2

    int 21h

    mov dl,right

    mov ah,2

    int 21h

    mov right,0 ;重新恢复设置精确个数为0

    mov di,0

    mov dx,offset sum

    mov ah,9

    int 21h

    jmp let0

    real_prog3: ;排名分界面

    mov dx,offset mess3

    mov ah,9

    int 21h

    jmp let0 ;再次回到选用菜单

    real_prog4: ;退出

    mov dx,offset mess4

    mov ah,9

    int 21h

    mov ah,4ch

    int 21h

    code ends

    end start

    ```

    二、实验内容

    1、在显示器的内定区域内显示字符串。(必做题)

    2、在显示屏的制订区域内画框,在框内展现字符串。(升高题)

    3、在荧屏上钦命区域内画框并以动画方式显得字符串。(选做题)

    清屏子程序:

    void cls(void)

    { union REGS r;

      r.h.ah=6; /*子成效号*/

      r.h.al=0;   

    r.h.ch=0; /*左上角坐标*/

      r.h.cl=0;

      r.h.dh=24; /*右下角坐标*/

      r.h.dl=79;

      r.h.bh=7; /*7意味着浅蓝*/

      int86(0x10,&r,&r); /*系统作用调用*/

     }

    定位子程序:

    void locate(int x, int y)

    { union REGS r;

      r.h.ah=2; /*子功能号*/

      r.h.dh=x; /*定位点坐标*/

    r.h.dl=y;

    r.h.bh=0;

    int86(0x10,&r,&r);

    }

    在钦点地方写参数:

    void writech(int x , int y, char ch ,int attr)

    { union REGS r;

      locate(x ,y);

      r.h.ah=9;

      r.h.bh=0;

      r.h.al=ch;

    r.h.bl=attr

    r.x.cx=1;

    int86(0x10,&r,&r);

    }

    荧屏画框能够用制表符来画。其重大方法是接连不断调用writech函数,在钦赐区域周边呈现制表符,进而勾勒出三个窗口的概况。

    制表符   ASCII码

    ┛ 217

    ┏ 218

    ┓ 191

    ┗ 192

    ┃ 179

    ━ 196

    本文由澳门新葡8455最新网站发布于澳门新葡8455最新网站,转载请注明出处:x86汇编完成朝鲜语打字演习软件,系统功用调用

    关键词:

上一篇:没有了

下一篇:没有了