【公海710登录网址】(2卡塔尔总计阶乘的功力用子程序达成,展现菜单

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

代码完成

“`

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

;输入达成,开首次展览开巡回比较

www.710.com,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

公海710登录网址,;输出正确个数

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

;置显示光标

【公海710登录网址】(2卡塔尔总计阶乘的功力用子程序达成,展现菜单。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

“`

   output endp

┗ 192

程序框图:

公海710登录网址 1

程序框图

   int 21h

  locate(x ,y);

目的:

编写制定葡萄牙共和国(República Portuguesa卡塔尔语打字练习软件,综合复习字符输入和展现,置光标、开窗口、颜色设置等显示屏功效;驾驭分支程序中字符相比及总结的程序设计,循环及排序程序设计方法;参预中断调用的计时功用。通过上述综合性练习,进一层压实对汇编语言的掌握和增进程序设计本事。

l3:  mov bx,000ah

void locate(int x, int y)

内容:

1.显示器现身打字演习菜单(格式自定,字体、字号、颜色卡塔尔国

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

   int 21h

  r.h.dl=79;

(3卡塔尔以十进制格局出口结果的效能用子程序达成,子程序的名称为:output;

 }

   int 21h

  r.h.ah=2; /*子作用号*/

 s2 db ‘its factorial=$’

3、掌握运用10H号效用调用(BIOS的展现I/O效率调用卡塔 尔(阿拉伯语:قطر‎来贯彻对荧屏的操作与操纵。

     inc cl

意气风发、实验目标

班级:  计算机14-1  姓名:  许恺    学号:  2014011329日期: 2016.4.29          

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

stack segment stack

━ 196

     mov dx,0000h

清屏子程序:

   int 21h

r.h.bl=attr

code segment

二、实验内容

     div bx

┓ 191

   output proc near

1、在荧屏的钦命区域内体现字符串。(必做题卡塔尔

(2卡塔尔国运转结果(截图卡塔 尔(阿拉伯语:قطر‎:

定位子程序:

 assume cs:code,ds:data,ss:stack

{ union REGS r;

   call output

3、在显示器上钦定区域内相框并以动漫方式显得字符串。(选做题卡塔 尔(英语:State of Qatar)

 main endp

}

     add dx,0030h

1、熟习操作系统的体系机能调用。

l2:  pop dx

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

   mov ah,09h

2、在显示屏的创建区域内相框,在框内展现字符串。(提升题卡塔尔国

   mov dx,0

  r.h.bh=0;

(4卡塔 尔(阿拉伯语:قطر‎各子程序通过寄放器传递参数;

荧屏相框能够用制表符来画。其重大措施是一再调用writech函数,在钦定区域相近展现制表符,从而勾勒出二个窗口的轮廓。

     loop l2

┏ 218

 

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

   lea dx,s1

  r.h.al=ch;

     push dx

2、精通用C语言达成系统机能调用的章程和手续。

   fac endp

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

     jbe l2

r.h.bh=0;

end start

{ union REGS r;

     ret

┃ 179

stack ends

  r.h.al=0;   

     int 21h

  r.h.cl=0;

   mov ax,bx

void cls(void)

   mov ah,4ch

┛ 217

   mov ah,01h

}

   int 21h

  r.h.bh=7; /*7代表蓝色*/

   mov dl,0ah

r.x.cx=1;

(1卡塔尔国程序清单:

在钦定地点写参数:

data ends

制表符   ASCII码

   mov al,dh

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

 

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

   mov ah,09h

r.h.dl=y;

1.从键盘输入一个不当先8的个位数,总括该数的阶乘,并以十进制制式输出。

{ union REGS r;

   sub al,30h

  r.h.ah=9;

   mov ah,02h

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

   mov ah,02h

   fac proc near

要求:

     jmp l3

     dec cl

   mov ds,ax

 公海710登录网址 2

code ends

二、编制程序体会

 dw 30 dup(?)

   mov dh,al

(5卡塔 尔(英语:State of Qatar)输出格式要美丽,要有方便的唤醒。

 s1 db ‘please input an integer between 0 to 8:$’

意气风发、编写程序

   call fac

     ret

     cmp ax,0

     mov ah,02h

     loop l1

start:

(1卡塔尔国输入数据在主程序中贯彻;

     mov cl,al

其实感觉仓库段不用编写,因为在此以前不写也行,初阶已经写好了,后来知道要有提醒语句,又加输出字符串时就出错了,在压栈的时候现身了死循环,是用dx输出字符串的时候出了难点,最后是再次把dx赋0才缓慢解决,本次特别通晓了酒店的行使,今后会用的更是的随手和高频。

l1:  mul cx

   mov dl,0dh

   mov ah,0

(2卡塔 尔(英语:State of Qatar)总括阶乘的效果与利益用子程序达成,子程序的名叫:fac;

   mov bx,ax

   mov ax,data

data segment

   lea dx,s2

   int 21h

     mov cx,0000h

 main proc far

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图