微机原理王晓莉实验09

2019-03-27 16:01

实验 9 回文字符串的判断

实验日期: 2012-12-21 指导教师: 刘波老师 星期: 五 节次: 2 实验课时: 2 姓名: 王晓莉 学号: 10531008 专业、班级: 10电信1班 得分:

1、 实验目的

掌握汇编语言设计和调试方法。

2、 实验内容

定义一个字符串,用程序判断该字符串是不是回文字符串。若字符串与颠倒后的字符串相等,则

该串为回文

字符串 aba abab lovevol

3、实验步骤

1)、用连续或单步方式运行程序,检查AX中内容变化情况。 。

#make_COM#

是否是回文 是 不是 是

ORG 100h jmp start

s DB 'aaabbbaaa' s_size DW 9

start: LEA DI, s

MOV SI, DI ADD SI, s_size

DEC SI ; point to last char! MOV CX, s_size

SHR CX, 1 ; divide by 2!

next_char: MOV AL, [DI] MOV BL, [SI] CMP AL, BL

JNE not_Palindrome INC DI DEC SI

LOOP next_char

is_Palindrome: MOV AX, 0FFFFh

; Set AX to 0FFFFh - the string is \ JMP stop not_Palindrome:

; Set AX to 0ABCDh - the string is \ MOV AX, 0ABCDh stop:RET

4、实验运行结果: MOV AL, [DI]

MOV AX, 0FFFFh

最终结果:

5、思考题解答

1)程序中为啥要将CX除以2?

答:因为若字符串与颠倒后的字符串相等,则为回文,所以首尾字符做比较,比较次数是CX 次,也就是字符串长度的一半。

2)定义一个字符串,检查该字符串是否是回文,若是回文,在屏幕上打印出前半部分字符,其后加上“ yes”;若不是回文,在屏幕上打印出所有字符,其后加上“ no” #MAKE_EXE#

DSEG SEGMENT

PASS1 DB 'AAABBBBAAA' s_size EQU 10 D1 DB 'AAABB YES','$' D2 DB 'AAABBBAAA NO','$'

DSEG ENDS

CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG

start:MOV AX,DSEG MOV DS,AX

LEA DI, PASS1 MOV SI, DI ADD SI, s_size DEC SI

MOV CX, s_size

SHR CX, 1 ; divide by 2! next_char:

MOV AL, [DI] MOV BL, [SI] CMP AL, BL JNE not_Palindrome INC DI

DEC SI LOOP next_char is_Palindrome:

LEA DX, D1

MOV AH,9 INT 21H

; Set AX to 0FFFFh - the string is \ JMP stop not_Palindrome:

; Set AX to 0ABCDh - the string is \ LEA DX, D2 MOV AH,9 int 21h stop: MOV AH,4CH INT 21H CSEG

ENDS

END START

若定义字符串为aaaabbbdda则结果是:


微机原理王晓莉实验09.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:局域网组建与网络综合布线测试

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: