华南农业大学汇编语言8086习题附答案.docx

上传人:b****0 文档编号:17374102 上传时间:2023-07-24 格式:DOCX 页数:81 大小:33.67KB
下载 相关 举报
华南农业大学汇编语言8086习题附答案.docx_第1页
第1页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第2页
第2页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第3页
第3页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第4页
第4页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第5页
第5页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第6页
第6页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第7页
第7页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第8页
第8页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第9页
第9页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第10页
第10页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第11页
第11页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第12页
第12页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第13页
第13页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第14页
第14页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第15页
第15页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第16页
第16页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第17页
第17页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第18页
第18页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第19页
第19页 / 共81页
华南农业大学汇编语言8086习题附答案.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

华南农业大学汇编语言8086习题附答案.docx

《华南农业大学汇编语言8086习题附答案.docx》由会员分享,可在线阅读,更多相关《华南农业大学汇编语言8086习题附答案.docx(81页珍藏版)》请在冰点文库上搜索。

华南农业大学汇编语言8086习题附答案.docx

华南农业大学汇编语言8086习题附答案

题目名称

实验一汇编语言程序结构

题目关键字

源程序结构debug

题目录入时间

题目内容

一、实验目的

1.掌握汇编语言程序上机过程。

2.掌握汇编语言结构。

3.了解汇编程序、连接程序、DOS系统装入和返回功能。

4.掌握用DEBUG调试汇编语言程序的方法

二、实验要求

1.编写完整的汇编语言程序:

(1)逆序输出字符串“BASEDADDRESSING”。

(2)从键盘上输入2个一位的正数,求出它们的和(假设和不超过1位)。

(3)试编写一段程序,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字单元UP中;找出小于42H的无符号数的个数并存入字单元DOWN中。

2.在DEBUG下查看程序执行的过程,以及变量值的变化。

3.演示程序运行结果,请指导教师检查。

三、思考

1.汇编语言程序中语句END后的标号作用是什么?

2.采用标准序结构编制源程序,用ret结束程序运行返回操作系统时,可否将语句mainprocfar中的far属性去掉,为什么?

3.一个段的大小为多少?

一定是64KB吗?

如何在DEBUG下查看程序在内存的存放情况?

四、提交内容

将各个源程序代码、exe文件压缩为RAR后提交到作业系统。

题目创建人

题目注释

1.1.asm

DATASSEGMENT

Stringdb"BASEDADDRESSING"

countdw$-String

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movcx,count;循环次数

leasi,count-1;将最后一个字符‘G’的地址给si

L:

movah,2

movdl,[si]

decsi

int21h

loopL

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

1.2.asm

DATASSEGMENT

xdb"x=$"

ydb"y=$"

zdb"x+y=$"

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movah,9;显示"x="

leadx,x

int21h

movah,1;输入X

int21h

subal,30h

movcl,al;将X放在CL

movah,9;显示"y="

leadx,y

int21h

movah,1;输入Y

int21h

subal,30h

addcl,al;两数字相加

movah,9;显示"z="

leadx,z

int21h

movah,2;显示结果

movdl,cl

adddl,30h

int21h

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

1.3.asm

DATASSEGMENT

arraydb128dup(41h,43h)

updw0

downdw0

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadi,array

movcx,256

L:

moval,[di]

cmpal,42h

jlL1

jaL2

L1:

incdown

jmpL3

L2:

incup

jmpL3

L3:

incdi

loopL

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

题目名称

实验二程序结构与简单程序设计

题目关键字

简单程序设计

题目录入时间

2013-4-122:

45:

55

题目内容

一、实验目的

1.掌握汇编语言源程序结构。

2.掌握汇编语言调试方法。

二、实验要求

1.编写完整的汇编语言程序:

(1)试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。

(2)编写程序,从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。

(3)试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”,若不相同则显示“NOMATCH”.

(4)编写程序,将一个包含有20个数据的数组M分成2个数组:

正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。

2.在DEBUG下查看程序执行的过程,以及变量值的变化。

3.演示程序运行结果,请指导教师检查。

三、思考

1对输入的非字母字符如何处理?

2.字母“a”和“z”边界字符的处理方法是什么?

3.显示结果为多位数的时候如何输出?

四、提交内容

将各个源程序代码、exe文件,思考题的WORD文档压缩为RAR后提交到作业系统。

题目创建人

题目注释

2.1.asm

DATASSEGMENT

crlfdb0ah,0dh,'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movah,1;输入数据会AL

int21h

pushax;将AX存进栈里

leadx,crlf;换行

movah,9

int21h

popdx;栈里数据放进DX,即将原先AX放进DX

subdl,20h;小写变大写要减去20h

movah,2;输出

int21h

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

2.2.asm

DATASSEGMENT

Stringdb'zabcdefghijklmnopqrstuvwxyza'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadi,String

movah,1;输入字母

int21h

L:

incdi;先DI自加1,第一次就是‘a’的地址,不是‘z’

cmpal,[di];直到找到字母和输入的相匹配

jnzL

decdi;推前成为前端字母的地址

movcx,3;循环次数3

L2:

movdl,[di]

incdi

movah,2

int21h

loopL2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

2.3.asm

DATASSEGMENT

String1db"thisisaprogram"

count1dw$-String1

String2db"thisisaprogram"

count2dw$-String2

answer1db'match','$'

answer2db'nomatch','$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movax,count1

movbx,count2

cmpax,bx;比较两个字符串的长度,如果不等就是不匹配

jnznext

movcx,count1;字符串长度

leasi,string1

leadi,string2

L:

moval,[si]

cmpal,[di];比较两个字符串的字符,如果不等就跳

jnznext

incsi

incdi

loopL

leadx,answer1;能到这里说明都匹配

movah,9

int21h

jmpfinally;跳去finally,避免顺序执行了next

next:

;显示不匹配

leadx,answer2

movah,9

int21h

finally:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

2.4.asm

DATASSEGMENT

Mdb5dup(-1,1,2,3)

Pdw0

Ndw0

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leasi,M

movcx,20;循环次数

L:

moval,[si]

cmpal,0;和0比较判断正负

jlL1

jgL2

L1:

incN

jmpL3

L2:

incP

jmpL3

L3:

incsi

loopL

movax,P;输出P

movbl,10;设置除数10

divbl

movbh,ah;将ah(余数放在bh保留)

movdl,al;将商显示

adddl,30h

movah,2

int21h

movdl,bh;将余数显示

adddl,30h

movah,2

int21h

movax,N;输出N

movbl,10

divbl

movbh,ah

movdl,al

adddl,30h

movah,2

int21h

movdl,bh

adddl,30h

movah,2

int21h

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

题目名称

实验三分支程序设计

题目关键字

分支结构

题目录入时间

2013-4-1420:

14:

57

题目内容

一、实验目的

1.掌握汇编语言源程序结构。

2.掌握汇编语言分支结构程序设计方法。

二、实验要求

1.编写完整的汇编语言程序:

(1)试编写一段程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。

(2)编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。

(3)键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。

(4)有一个首地址为mem的100个字的数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。

2.在DEBUG下查看程序执行的过程,以及变量值的变化。

3.演示程序运行结果,请指导教师检查。

三、思考

1.求极值时程序初始化应该注意什么?

2.如何从键盘上输入多位数?

3.第(4)小题有多少种做法?

四、提交内容

将各个源程序代码、exe文件以及思考题压缩为RAR后提交到作业系统。

提交时请填写自评内容。

题目创建人

题目注释

3.1.asm

DATASSEGMENT

DATAdw1dup(1,2,-1,4,-2,-6)

countdw($-DATA)/2

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movcx,count

leasi,DATA-2

L1:

;将第一个偶数存在AX

addsi,2

movax,[si]

deccx

testal,01h

jnzL1

L2:

;找到另外一个偶数

addsi,2

movbx,[si]

cmpcx,0

jzL4

deccx

testbl,01h

jnzL2

cmpax,bx;比较两个偶数,如果ax>bx那么跳到L3

jgL3

jmpL2

L3:

movax,bx

jmpL2

L4:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

3.2.asm

DATASSEGMENT

NUMdw0

crlfdb0dh,0ah,'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movdx,0

movcx,4

L:

movah,1

int21h

cmpal,40h

jgL1

jlL2

L1:

subal,07h;大写字母多减7

L2:

subal,30h;变成实际数字

pushax;原来数字*16+新接受数字

movax,NUM

movbx,16

mulbx

popbx

adcal,bl

movNUM,ax

loopL;循环4次

leadx,crlf

movah,9

int21h

movcx,16

movbx,NUM

L3:

movdl,31h

salbx,1;左移1位,改变CF

jcL4

subdl,1;CF为0,所以DL减去1,变成0

L4:

movah,2

int21h

loopL3

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

3.3.asm

DATASSEGMENT

Stringdb128,?

128dup('$')

crlfdb0dh,0ah,24h

countdw0

numdw0

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadx,String;吸收字符串

movah,0ah

int21h

leadx,crlf;换行

movah,9

int21h

leasi,String+1;cx存放着字符串个数

movcl,[si]

movch,0

leadi,String+2;从实际字符串开始

L1:

moval,[di]

incdi

cmpal,30h

jlL2

cmpal,39h

jgL2

decnum;如果是数字,先减num后加num,将其抵消

L2:

incnum

loopL1

movcx,0

movax,num

L3:

;余数放栈,检测商是否为0,为0就退出

movbl,10

divbl

pushax

inccx;记录余数个数

movah,0

cmpal,0

jnzL3

L4:

;将余数输出

popdx

movdl,dh

adddl,30h

movah,2

int21h

loopL4

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

3.4.asm

DATASSEGMENT

memdw0,1,2,0,0,3,2,0,5,0,0,1

countdw($-mem)/2

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadi,mem-2;先减2再恢复

movcx,count

L:

;找到0元素

cmpcx,0

jznext

adddi,2

movax,[di]

deccx

cmpax,0

jnzL

movsi,di

pushcx

L2:

;找到非0元素

cmpcx,0

jznext

addsi,2

movax,[si]

deccx

cmpax,0

jzL2

mov[di],ax;复制过去

movwordptr[si],0;复制后自己变0

popcx

jmpL

next:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

题目名称

实验四循环程序设计1

题目关键字

循环结构程序

题目录入时间

2013-4-2217:

28:

16

题目内容

一、实验目的

1.掌握汇编语言源程序结构。

2.掌握汇编语言循环结构程序设计方法。

二、实验要求

1.编写完整的汇编语言程序:

(1)从键盘上输入一串字符(用回车键结束,使用10号功能调用。

)放在STRING中,试编制一个程序测试字符串中是否存在数字。

如有,则把CL的第5位置1,否则将该位置置0。

(2)在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一个程序,求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。

(3)已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。

试编制一个程序,把既在A中又在B中出现的整数存放于数组C1中。

(4)简化的歌德巴赫猜想:

任何一个大于6的偶数均可以表示为两个素数之和。

现从键盘输入一个0~65535之间的无符号整数,试验证歌德巴赫猜想。

如输入数12,输出:

12=5+7

如输入数20,输出:

20=3+17

20=7+13

如输入数7,输出:

Mustbeeven

如输入数3,输出:

Mustbegreaterthanorequalto6

2.演示程序运行结果,请指导教师检查。

三、思考

从键盘上输入一串字符时,数据缓冲区如何定义?

题目创建人

题目注释

4.1.asm

DATASSEGMENT

Stringdb128,?

128dup('$')

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadx,String

movah,0ah

int21h

leasi,String+1;字符串个数地址

movcl,[si]

movch,0

incsi;第一个字符地址

L:

moval,[si]

cmpal,30h

jlL1

cmpal,39h

jgL1

orcl,00001000b;CL第五位置1

jmpnext

L1:

incsi

loopL

next:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

4.2.asm

DATASSEGMENT

DATAdw1,2,3,4,5,6,7,8,9,10

countdw($-DATA)/2

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movdx,0

movax,0

movcx,count

leasi,DATA

L:

;计算总数

movbx,[si]

addax,bx

addsi,2

loopL

movbx,count;求平均值

divbx

leasi,DATA

movcx,count;设置循环个数

movbx,0;初始化

L2:

movdx,[si]

cmpdx,ax

jnlL3

incbx;bx++

L3:

addsi,2

loopL2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

4.3.asm

DATASSEGMENT

Adb1,3,5,7,9,11,13,15,17,19,21,23,25,27,29

count1dw$-A

Bdb1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

count2dw$-B

C1db15dup(?

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

leadi,C1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2