作业帮 > 数学 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/28 12:03:14
汇编语言实验 分支程序设计
在本实验中我们可以将寄存,我们以求解一组无符号字节序列中的最大值和最小值的问题进行讲解分支程序的设计和实现.最终结果是序列中的最大数和最小数,器BX的高位和低位分别用于存放最大数和最小数,然后,将序列中的两个数存入其中,再将序列中的其他数分别与BH和BL中的数进行比较,如果大于BH或者小于BL,则将寄存器中的数用当前取出的数进行替换,完全比较之后,BH和BL中数即为整个序列中的最大数和最小数.
RW\x09\x09MACRO\x09A,B
\x09\x09LEA\x09 DX, A
\x09\x09MOV AH,\x09 B
\x09\x09INT\x09 21H\x09
\x09\x09ENDM
DATA SEGMENT USE16
BUF1 DB 60
\x09\x09 DB ?
\x09\x09 DB 60 DUP(?)
\x09\x09BUF2 DB 60
\x09\x09\x09DB ?
\x09\x09\x09DB 60 DUP(?)
\x09\x09STR1 \x09DB 0DH,0AH,'$'
\x09\x09STR2\x09DB 'success!$'
\x09\x09STR3\x09DB 'Your telephone number is not match, please try again.$'
\x09\x09STR4 DB 'Please input your telephone number:$'
\x09\x09STR5 DB 'Please input your telephone number again:$'
DATA ENDS
STACK SEGMENT\x09\x09USE16\x09 STACK
\x09\x09DB \x09\x09200 DUP(0)
STACK\x09ENDS
CODE\x09SEGMENT\x09\x09USE16
\x09ASSUME\x09\x09DS:DATA, ES:DATA,\x09 CS:CODE, SS:STACK
START:
\x09\x09MOV\x09AX,\x09\x09DATA
\x09\x09MOV \x09DS,\x09\x09AX
\x09\x09MOV \x09ES,\x09\x09AX
LOOP1:\x09 RW STR4, 9 ;输出Please input your telephone number:
\x09\x09RW\x09\x09BUF1,\x0910 ;输入号码
\x09\x09RW\x09\x09STR1,\x099 ;回车换行
\x09\x09RW STR4, 9 ;输出Please input your telephone number again:
\x09\x09RW\x09\x09BUF2,\x0910 ;输入号码
\x09\x09RW\x09\x09STR1,\x099 ;回车换行
\x09\x09MOV\x09\x09CL,\x09BUF1[1]
\x09\x09CMP\x09\x09CL,\x09BUF2[1] ;比较输入的号码位数是否一样
\x09\x09JNE\x09\x09NO
\x09\x09MOVSX\x09 CX,\x09CL
\x09\x09MOV\x09\x09SI,\x09OFFSET\x09BUF1[2]
\x09\x09MOV\x09\x09DI,\x09OFFSET\x09BUF2[2]
\x09\x09CLD
\x09\x09REPZ\x09 CMPSB ;比较输入的号码是否相同
\x09\x09JNE\x09\x09NO
\x09\x09RW\x09\x09STR2,\x099 ;输出success!
\x09\x09JMP\x09\x09EXIT
NO:\x09\x09RW\x09\x09STR3,\x099 ;输出Your telephone number is not match, please try again.
RW\x09\x09STR1,\x099 ;回车换行
\x09\x09JMP LOOP1
EXIT:\x09 MOV\x09AH,\x094CH
\x09\x09INT\x09\x0921H
CODE\x09ENDS
\x09\x09END\x09\x09START