ascii-汇编将输入的十进制数字转换来二进制,八进制,十七进制,代码写出来了,可是却不可能平常运维

来源:http://www.cdhuazhijian.com 作者:操作系统 人气:182 发布时间:2019-11-18
摘要:int86(0x10,r); 目的: 编辑印度语印尼语打字演练软件,综合复习字符输入和展现,置光标、开窗口、颜色设置等显示屏成效;精晓分支程序中字符比较及总括的程序设计,循环及排序程序

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

目的:

编辑印度语印尼语打字演练软件,综合复习字符输入和展现,置光标、开窗口、颜色设置等显示屏成效;精晓分支程序中字符比较及总括的程序设计,循环及排序程序设计方法;参预中断调用的计时效能。通过上述综合性练习,进一层抓好对汇编语言的领会和升高程序设计本领。

   mov ah,09h

mov ah,4chint 21h

{ union REGS r;

代码达成

```

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卡塔尔输入数据在主程序中贯彻;

;========================转换为8进制==============================
mov dl,'1' ;假设bx=1100 0000 0000 0000
rol bx,1 ;逻辑循环左移则发出进位
jc then1 ;产生进位后则跳转到then1,展现8进制第一个人为1
mov dl,'0' ;未爆发进位,则率先位突显0
then1:
mov ah,2
int 21h
mov cx,5 ;/3=5,3个二进制数表示贰个八进制数
aga3:
push cx
mov cl,3
rol bx,cl ;循环左移3位
pop cx
mov dx,bx
and dl,07h ;07h=0000 0111b,将dl的高4位清零,低4位的首先位清零
add dl,30h
mov ah,2
int 21h
loop aga3

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

内容:

1.荧屏现身打字练习菜单(格式自定,字体、字号、颜色卡塔尔国

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

end start

xchg [di],ax
add [di],ax
inc si
loop aga
mov bx,[di]
mov dl,0ah
mov ax,2
int 21h
mov dl,0dh
int 21h
mov cx,16
last:
mov dl,'0'
rol bx,1
jnc next ;与cf标识有关,若不进位,即cf=0,则跳转
mov dl,'1'
next:
mov ah,2 ;展现dl中的字符
int 21h
loop last
mov ah,2
mov dl,0ah
int 21h
mov dl,0dh
int 21h ;换行
mov cx,4
aga2:
push cx
mov cl,4
rol bx,cl ;将bh的高4位循环左移入al的低4位中
pop cx
mov dx,bx
and dl,0fh ;将dl的高4位清零,保留dl的低4位,即bh中的高4位
cmp dl,10
jc then ;进位则跳转,即dl小于10
add dl,7
then:
add dl,30h
mov ah,2
int 21h
loop aga2
mov dl,0ah
int 21h
mov dl,0dh
int 21h ;换行

{ union REGS r;

程序框图:

图片 1

程序框图

 

mov bx,10lea dx,buf ;从键盘输入一个字符到缓冲区mov ah,0ahint 21hmov si,offset buf+2 mov di,offset buf1mov cl,buf+1 ;将实际输入字符个数送入cl中

在钦定地点写参数:

风流倜傥、编写程序

code ends
end start

r.h.dl=y;

   int 21h

汇编将输入的十进制数字调换到二进制,八进制,十八进制,代码写出来了,不过却未有任何进展符合规律运转 1C
data segment
mesg db 'please input :',0ah,0dh,'$'
buf db 5
db ?
db 5 dup
buf1 db 5 dup
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,mesg ;在荧屏上出示mesg标号后的剧情
mov ah,9
int 21h

 }

   mov al,dh

aga:
mov al,[si] ;将输入的率先个字符对应的ASCII码送入al中
sub al,30h ;获得输入的率先个数的原值
mov ah,0
xchg ax,[di]

r.x.cx=1;

   mov ah,01h

不明白不当在哪里...
还请大神指教

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

   int 21h

mul bx

1、熟谙操作系统的系统功效调用。

l1:  mul cx

  r.h.bh=7; /*7意味花青*/

     push dx

黄金时代、实验目标

   mov dh,al

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

   call fac

制表符   ASCII码

 main proc far

━ 196

   mov ah,4ch

1、在显示屏的钦命区域内显示字符串。(必做题卡塔尔国

     inc cl

}

   mov ah,02h

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

   mov dl,0ah

┃ 179

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

  r.h.cl=0;

   output proc near

  r.h.ah=9;

stack ends

本文由澳门新葡新京发布于操作系统,转载请注明出处:ascii-汇编将输入的十进制数字转换来二进制,八进制,十七进制,代码写出来了,可是却不可能平常运维

关键词:

上一篇:IE6浏览器无法张开QQ邮箱

下一篇:没有了

最火资讯