汇编第三次实验内容参考答案3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三作业编程实验

3-1、教材习题3.12

已知从DS:2200H,ES:3200H单元起分别存放20个ASCII的字符。找出这两个字符串中第一个不同字符的位置(段内偏地址),并放入DS:22A0H开始的连续两个字单元中。请设计完成此任务的程序段。

(1)使用通常用的比较指令(CMP)实现;

(2)使用数据串比较指令(CMPSB)实现。

方法1

DATAS SEGMENT

ORG 2200H

TAB DB'0123ASFG69HWDIZXCVBN'

ORG 3200H

MEM DB'0123BASDFGMVCXZQWERI'

ORG 22A0H

RESULT DW?,?;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV ES,AX

LEA SI,TAB

LEA DI,MEM

MOV CX,20

A2:MOV BL,[SI]

CMP BL,[DI]

JZ A1

MOV BX,SI

MOV RESULT,BX

MOV BX,DI

MOV RESULT+2,BX

JMP DONE

A1:INC SI

INC DI

LOOP A2

;此处输入代码段代码

DONE: MOV AH,4CH

INT 21H

CODES ENDS

END START

方法2

DATAS SEGMENT

ORG 2200H

TAB DB'0123ASFG69HWDIZXCVBN'

ORG 3200H

MEM DB'0123BASDFGMVCXZQWERI'

ORG 22A0H

RESULT DW?,?;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV ES,AX

LEA SI,TAB

LEA DI,MEM

MOV CX,20

A2:CMPSB

;MOV BL,[SI]

;CMP BL,[DI]

JZ A1

DEC DI

DEC SI

MOV BX,SI

MOV RESULT,BX

MOV BX,DI

MOV RESULT+2,BX

JMP DONE

A1:LOOP A2

;此处输入代码段代码

DONE: MOV AH,4CH

INT 21H

CODES ENDS

END START

3-2、教材习题3.21

编写程序段,在数据区0000H:2000H开始100字节范围内,查找字符'A',若找到,则将偏移地址送入DX,没有找到,则结束。DATAS SEGMENT

ORG 2000H

STRING DB'1A34567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuioplkjh'

DB'1234567890QWERTYUIOPKSDFGHJKLZXCVBNMqwertyuioplkjh'

CNT EQU $-STRING

;ORG 3500H

RESULT DW?;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV ES,AX

LEA DI,STRING

MOV CX, CNT

MOV AL,'A'

A1: SCASB

JZ A2

DEC CX

JNZ A1

JMP DONE

A2: DEC DI

MOV RESULT,DI

DONE: MOV AH,4CH

INT 21H

CODES ENDS

END START

3-3、教材习题3.33

编程实现求S=(X2+Y2 )/Z的值,并将结果放入RESULT单元。

DATAS SEGMENT

X DB 5

Y DB 4

Z DB 3

RESULT DB?;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV AL,X

MOV CL,2

MUL AL

MOV BX,AX

MOV AL,Y

MUL AL

ADD AX,BX

MOV BL,Z

DIV BL

MOV RESULT,AL;此处输入代码段代码

MOV AH,4CH

INT 21H

CODES ENDS

END START

3-4、教材习题3.34

在数据区中,以TABLE开始连续存放0~6的立方值(称为立方表),设任给一数x(0≤x≤6),x在TAB1单元,查表求x的立方值,并把结果存入TAB2单元。

DATAS SEGMENT

TABLE DB 0,1,8,27,64,125,216

TAB1 DB 3

TAB2 DB?;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

相关文档
最新文档