求个汇编语言流程图

求个汇编语言流程图,第1张

stacksegment para stack 'stack'

db 256 dup(0)

top label word

stackends

data segment para public 'data'

buffer db 16h dup(0)

bufpt1 dw 0

bufpt2 dw 0

kbflag db 0

prompt db ' *please practise typing*',0dh,0ah,'$'

scantab db 0,0,'1234567890-=',8,0

db 'qwertyuiop[]',0dh,0

db 'asdfghjkl',0,0,0,0

db 'zxcvbnm,./',0,0,0

db ' ',0,0,0,0,0,0,0,0,0,0,0,0,0

db '789-456+1230.'

even

oldcs9 dw ?

oldip9 dw ?

str1 db 'abcd efgh ijkl mnop qrst uvwx yz.'

db 0dh,0ah,'$'

str2 db 'there are some newspapers on the table.'

db 0dh,0ah,'$'

str3 db 'there are some clouds in the sky.'

db 0dh,0ah,'$'

str4 db 'she always eats her lunch at noon.'

db 0dh,0ah,'$'

str5 db 'i do not like autumn and winter.'

crlf db 0dh,0ah,'$'

colondb ':','$'

even

saddrdw str1,str2,str3,str4,str5

countdw 0

sec dw 0

min dw 0

hoursdw 0

save_lc dw 2 dup(?)

data ends

code segment

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

main proc far

start:

mov ax,stack

mov ss,ax

mov sp,offset top

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov es,ax

mov ah,0

mov al,4

int 21h

mov ah,0bh

mov bh,0

mov bl,4

int 11h

mov ah,35h

mov al,09h

int 21h

mov oldcs9,es

mov oldip9,bx

push ds

mov dx,seg kbint

mov ds,dx

mov dx,offset kbint

mov al,09h

mov ah,25h

int 21h

pop ds

mov ah,35h

mov al,1ch

int 21h

mov save_lc,bx

mov save_lc+2,es

push ds

mov dx,seg clint

mov ds,dx

mov dx,offset clint

mov al,1ch

mov ah,25h

int 21h

pop ds

in al,21h

and al,11111100b

out 21h,al

first: mov ah,0

mov al,3

int 10h

mov dx,offset prompt

mov ah,9

int 21h

mov si,0

next:mov dx,saddr[si]

mov ah,09h

int 21h

mov count,0

mov sec,0

mov min,0

mov hours,0

sti

forever:

call kbget

test kbflag,80h

jnz endint

push ax

call dispchar

pop ax

cmp al,0dh

jnz forever

mov al,0ah

call dispchar

call disptime

lea dx,crlf

mov ah,09h

int 21h

add si,2

cmp si,5*2

jne next

jmp first

endint: cli

push ds

mov dx,save_lc

mov ax,save_lc+2

mov ds,ax

mov al,1ch

mov ah,25h

int 21h

pop ds

push ds

mov dx,oldip9

mov ax,oldcs9

mov ds,ax

mov al,09h

mov ah,25h

int 21h

pop ds

sti

ret

main endp

clintproc near

push ds

mov bx,data

mov ds,bx

lea bx,count

inc word ptr[bx]

cmp word ptr[bx],18

jne return

call inct

adj:

cmp hours,12

jle return

sub hours,12

return:

pop ds

sti

iret

clintendp

inct proc near

mov word ptr[bx],0

add bx,2

inc word ptr[bx]

cmp word ptr[bx],60

jne exit

call inct

exit:ret

inct endp

disptime proc near

mov ax,min

call bindec

mov bx,0

mov al,':'

mov ah,0eh

int 10h

mov ax,sec

call bindec

mov bx,0

mov al,':'

mov ah,0eh

int 10h

mov bx,count

mov al,55d

mul bl

call bindec

ret

disptime endp

bindec proc near

mov cx,100d

call decdiv

mov cx,10d

call decdiv

mov cx,1

call decdiv

ret

bindec endp

decdiv proc near

mov dx,0

div cx

mov bx,0

add al,30h

mov ah,0eh

int 10h

mov ax,dx

ret

decdiv endp

kbgetproc near

push bx

cli

mov bx,bufpt1

cmp bx,bufpt2

jnz kbget2

cmp kbflag,0

jnz kbget3

sti

pop bx

jmp kbget

kbget2:

mov al,[buffer+bx]

inc bx

cmp bx,16h

jc kbget3

mov bx,0

kbget3:

mov bufpt1,bx

pop bx

ret

kbgetendp

kbintproc near

push bx

push ax

in al,60h

push ax

in al,61h

or al,80h

out 61h,al

and al,7fh

out 61h,al

pop ax

test al,80h

jnz kbint2

mov bx,offset scantab

xlat scantab

cmp al,0

jnz kbint4

mov kbflag,80h

jmp kbint2

kbint4:

mov bx,bufpt2

mov [buffer+bx],al

inc bx

cmp bx,16h

jc kbint3

mov bx,0

kbint3:

cmp bx,bufpt1

jz kbint2

mov bufpt2,bx

kbint2: cli

mov al,20h

out 20h,al

pop ax

pop bx

sti

iret

kbintendp

dispchar proc near

push bx

mov bx,0

mov ah,0eh

int 10h

pop bx

ret

dispchar endp

code ends

end start

1、在纸上完成程序初稿;

2、在ide环境中编辑录入程序;

3、编译程序并检查修改编译错误

4、链接程序形成可执行文件,并继续修改可能影响生成可执行文件的错误;

5、运行程序并检查修改逻辑错误直至实现程序所需要的功能。

汇编语言程序设计步骤:

1、

分析问题,抽象出描述问题的数据模型

2、

确定问题的算法思想

3、

画出流程图或结构图

4、

分配存储器和工作单元(寄存器)

5、

逐条编写程序

6、

静态检查,上机调试


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7792782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存