汇编语言实验 分支程序设计

汇编语言实验 分支程序设计,第1张

RW MACRO A,B

LEA DX, A

MOV AH, B

INT 21H

ENDM

DATASEGMENT USE16

BUF1DB60

DB?

DB60 DUP(?)

BUF2DB60

DB?

DB60 DUP(?)

STR1 DB0DH,0AH,'$'

STR2 DB'success!$'

STR3 DB 'Your telephone number is not match, please try again.$'

STR4DB'Please input your telephone number:$'

STR5DB'Please input your telephone number again:$'

DATAENDS

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT USE16

ASSUME DS:DATA, ES:DATA, CS:CODE, SS:STACK

START:

MOV AX, DATA

MOV DS, AX

MOV ES, AX

LOOP1: RW STR4, 9输出Please input your telephone number:

RW BUF1, 10 输入号码

RW STR1, 9回车换行

RW STR4, 9输出Please input your telephone number again:

RW BUF2, 10 输入号码

RW STR1, 9回车换行

MOV CL, BUF1[1]

CMP CL, BUF2[1] 比较输入的号码位数是否一样

JNE NO

MOVSX CX, CL

MOV SI, OFFSET BUF1[2]

MOV DI, OFFSET BUF2[2]

CLD

REPZ CMPSB 比较输入的号码是否相同

JNE NO

RW STR2, 9 输出success!

JMP EXIT

NO: RW STR3, 9 输出Your telephone number is not match, please try again.

RW STR1, 9回车换行

JMP LOOP1

EXIT: MOV AH, 4CH

INT 21H

CODE ENDS

END START

data segment

org  2000h

str1  db    'Aedc123!*sdeDIO71$'

count equ   $-str1

org  2018h

str2  db    count dup(?)

data  ends

CODE   SEGMENT

ASSUME CS:CODE,DS:DATA

START: mov ax,data

MOV DS,AX

lea si,str1

lea di,str2

mov cx,count

l0:mov al,61H

cmp ds:[si],al

jl l1

mov al,7aH

cmp al,ds:[si]

jl l1

mov al,ds:[si]

sub al,20h

mov ds:[di],al

jmp l2

l1: mov al,ds:[si]

mov ds:[di],al

l2:inc si

inc di

loop l0

mov dx,offset str1

mov ah,9

int 21h

mov dx,offset str2

mov ah,9

int 21h

mov ah,4ch

int 21h

CODE   ENDS

END START

我随便举了一个数据段的例子

所谓分支程序,其实就是将函数的地址放在一组数据中,根据不同的条件跳转到这些地址入口执行程序。方法有几种,比如,以下就是利用跳转指令将地址组合在一起实现的方法之一。

MEMORYM:

LCALL CHGRAM11内存选择,确定内存区域,这里省略

MOV DPTR,#ST0函数入口地址组合首地址

CLR C

DEC A调用参数,以下计算入口地址

MOV R7,A

RLC A

ADD A,R7

JMP @A+DPTR跳转到入口地址

ST0:

LJMP FUNC1 以下为13个函数入口地址,完成不同的功能

LJMP FUNC2

LJMP FUNC3

LJMP FUNC4

LJMP FUNC5

LJMP FUNC6

LJMP FUNC7

LJMP FUNC8

LJMP FUNC9

LJMP FUNC10

LJMP FUNC11

LJMP FUNC12

LJMP FUNC13


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

原文地址: https://outofmemory.cn/yw/11498064.html

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

发表评论

登录后才能评论

评论列表(0条)

保存