为什么所有的程序都可以由顺序分支循环这三种控制结构

为什么所有的程序都可以由顺序分支循环这三种控制结构,第1张

图灵那时候早挂了。

1968年,在如何看待GOTO语句的问题上产生了激烈的争论,然后在1966 年,Bohm 与 Jacopini 证明了任何单入口单出口的没有“死循环”的程序都能由三 种最基本的控制结构构造出来。

这三种基本控制结构就是“顺序结构”、"IF—THEN—ELSE选择结构”、“DO_wHILE重复结构”或“DO UNTIL重复结构”。

也就是我们常说的“顺序、选择、循环”语句,嵌套来嵌套去就成了完整的程序代码,和Pascal之父(Nicklaus Wirth)的“算法+数据结构=程序” 原理差不多的。

;A题:

;判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。

data segment

DB 0

data ends

code segment

assume cs:code,ds:data

main proc far

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

next:

mov ah,07

int 21h

cmp al,0dh

jE end_d

cmp al,'0'

JGE DY0 ;>=0

JMP NEXT ;<'0'30H

DY0:

CMP AL,'9'

JLE IS_09

CMP AL, 'A'

JGE DY_A ;DAYU A

JMP NEXT ;<'A'41H

DY_A:

CMP AL,'Z'

JLE IS_AZ

CMP AL,'a'

JGE DY_xA ;DAYU xA

JMP NEXT ;<'a'61H

DY_xA:

CMP AL,'z'

JLE IS_AZ

JMP NEXT

;

IS_AZ:

MOV AH,02

MOV DL,'c'

INT 21H

JMP NEXT

IS_09:

MOV AH,2

MOV DL,AL

INT 21H

JMP NEXT

end_d:

ret

main endp

code ends

end main

;=============================================================

;B题:

data_C segment

DATA DB -1 , 4, 9 ;该处3数值可任意设定

A1 DB 0

A2 DB 0

A3 DB 0

DISP_MESS DB 0DH,0AH,'MIN IS : '

D1 DB 0

D2 DB 0, 'H$'

data_C ends

code segment

assume cs:code,ds:data_C

main proc far

push ds

sub ax,ax

push ax

mov ax,data_C

mov ds,ax

MOV BX, OFFSET DATA

MOV AL,[BX]

INC BX

MOV AH,[BX]

CMP AL,AH

JL ALAL1 ;AL<AH

XCHG AH,AL

ALAL1:

INC BX

MOV DL,[BX]

CMP AL ,DL

JL ALAL

XCHG AL,DL

ALAL:

CMP AH,DL

JL AL_SMALL

XCHG AH,DL

AL_SMALL:

MOV A1,DL

MOV A2,AH

MOV A3, AL

XOR DL,AL ;最大和最小数异或

AND DL,80H

NOT DL

TEST DL,80H ;高位为1 表示一正一负,否则为全负或全正

JE YZYF

AND AL,80H

NOT AL

TEST AL,80H ;高位为1 表示全负

JE QF

MOV AH,02

MOV DL,'+'

INT 21H

JMP DISP_SMALL

QF:

MOV AH,02

MOV DL,'-'

INT 21H

JMP DISP_SMALL

YZYF:

MOV AH,02

MOV DL,''

INT 21H

DISP_SMALL: ;显示最小值

MOV AL,A3

MOV AH,AL

AND AX,0F00FH

MOV CL,4

SHR AH,CL

CMP AH,0AH

JGE IS_AZ

ADD AH,30H

MOV D1,AH

JMP NN_1

IS_AZ:

ADD AH,40H -0AH+1

MOV D1,AH

NN_1:

CMP AL,0AH

JGE IS_AZ1

ADD AL,30H

MOV D2,AL

JMP NN_2

IS_AZ1:

ADD AL,40H -0AH+1

MOV D2,AL

NN_2:

MOV AH,09

MOV DX,OFFSET DISP_MESS

INT 21H

ret

main endp

code ends

end main

就像在计算机当中的CPU,管的是执行和运算,相当于电脑的大脑。

在你这段程序当中,管理执行或者是编译的程序代码块都属于这个程序结构的核心,并不是分支

执行部分就相当于你整个程序的大脑。

一个最大的特点就是:如果你的条件判断非常多,你用ifelseifelse这样的判断,代码将变得很难阅读。而如果使用switch,则变得简单易懂。如果只有很少的几个条件判断,则没什么区别了(当然其语法上是有些区别的)

以上就是关于为什么所有的程序都可以由顺序分支循环这三种控制结构全部的内容,包括:为什么所有的程序都可以由顺序分支循环这三种控制结构、汇编语言。循环与分支程序设计。高手们进来帮下忙吧~ 谢啦~、具有如果执行代码块的程序结构是什么分支结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10213544.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存