汇编实验题Word格式文档下载.docx

上传人:b****6 文档编号:19000564 上传时间:2023-01-02 格式:DOCX 页数:19 大小:18.97KB
下载 相关 举报
汇编实验题Word格式文档下载.docx_第1页
第1页 / 共19页
汇编实验题Word格式文档下载.docx_第2页
第2页 / 共19页
汇编实验题Word格式文档下载.docx_第3页
第3页 / 共19页
汇编实验题Word格式文档下载.docx_第4页
第4页 / 共19页
汇编实验题Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

汇编实验题Word格式文档下载.docx

《汇编实验题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编实验题Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

汇编实验题Word格式文档下载.docx

(3)下面的程序的功能是将“movax,4c00h”之前的指令复制到内存0:

200处,补全程序。

上机调试,跟踪运行结果。

code

codesegment

movax,code;

code为所填写的数据

moves,ax

movcx,18h;

18h为所填写的数据

moval,[bx]

moves:

[bx],al

codeends

dw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

start:

movax,0

movcx,8

movax,[bx]

movcs:

[bx],ax;

此条指令为所填指令

addbx,2

endstart

(2)

dw0,0,0,0,0

movax,cs;

cs为所填第一空

movss,ax

movsp,1ah;

此条指令为所填第二空

push[bx]

popcs:

[bx];

此条指令为所填第三空

实验5编写、调试具有多个段的程序(第123页)

1.保持不变

2.<

考虑不同机子环境不同,答案无法统一>

3.X-2,X-1

4.(N/16+1)*16[说明:

N/16只取整数部分]

(3)

3.X+3,X+4

(5)完整程序如下:

asegment

db1,2,3,4,5,6,7,8

aends

bsegment

bends

csegment

db0,0,0,0,0,0,0,0

cends

start:

movax,a

movax,c

s1:

movax,es:

[bx]

add[bx],ax

loops1

movax,b

s2:

loops2

endstart

(6)完整程序如下:

dw1,2,3,4,5,6,7,8

dw0,0,0,0,0,0,0,0

movsp,10h

movax,a

实验6实践课程中的程序(第147页)

(2)编程:

完成问题中的程序。

问题7.9完整程序如下:

codesg,ss:

stacksg,ds:

datasg

stacksgsegment

stacksgends

datasgsegment

db'

1.display'

2.brows'

3.replace'

4.modify'

datasgends

movax,stacksg

movsp,16

movax,datasg

movcx,4

;

外循环

pushcx

movsi,3

s0:

内循环

moval,[bx+si]

andal,11011111b

mov[bx+si],al

incsi

loops0

addbx,16

popcx

loops

movax,4c00h

int21h

实验7寻址方式在结构化数据访问中的应用(第160页)

完整程序如下:

codesg,ds:

data,es:

table

datasegment

1975'

'

1976'

1977'

1978'

1979'

1980'

1981'

1982'

1983'

1984'

1985'

1986'

1987'

1988'

1989'

1990'

1991'

1992'

1993'

1994'

1995'

以上是表示21年的21个字符串

dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

以上是表示21年公司总收的21个dword型数据

dw3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

dw11542,14430,45257,17800

dataends

tablesegment

db21dup('

yearsummne?

?

'

tableends

movax,data

movax,table

movsi,0

movdi,0

movcx,21

s:

进入循环

[di],al

moval,[bx+1]

[di+1],al

moval,[bx+2]

[di+2],al

moval,[bx+3]

[di+3],al

以上8句的作用是存放年份

movax,54h[bx];

第一个'

年收入'

的段基址为54H

movdx,56h[bx]

5h[di],ax

7h[di],dx

以上4句的作用是存放公司总收入

movax,0A8h[si];

人数'

的段基址为0A8H

0Ah[di],ax

以上2句是存放公司的人数

movax,54h[bx]

divwordptrds:

0A8h[si]

0dh[di],ax

以上3句是存放人均收入

addbx,4

addsi,2

adddi,16

以上3句是为下一次循环时存放数据做准备

3个寄存器递增的速度决定了所要存取的数据的位置的偏移地址

loops;

跳到标号s处

实验8分析一个奇怪的程序(第174页)分析下面的程序,在运行前思考:

这个程序可以正确返回吗?

运行后再思考:

为什么是这种结果?

通过这个程序加深对相关内容的理解。

nop

nop

movdi,offsets

movsi,offsets2

movax,cs:

[si]

[di],ax

s0:

jmpshorts

s1:

s2:

jmpshorts1

程序可以正常返回。

详细分析:

在此题中较为深入地考察了‘段内直接短转移’[形如:

jmpshort标号]的概念。

我们知道程序中:

movdi,offsets

movsi,offsets2

movax,cs:

movcs:

实验9根据材料编程(第175页)

code,ds:

data,ss:

stack

welcometomasm!

'

定义要显示的字符串(共16字节)

db02h,24h,71h;

定义三种颜色属性

dataends

stacksegment

dw8dup(0)

stackends

movax,stack

movax,0b872h;

算出屏幕第12行中间的显存的段起始位置放入ax中

movcx,3;

外循环为3次,因为要显示三个字符串

s3:

pushcx;

三个进栈操作为外循环s3保存相关寄存器的值

pushax;

以防止它们的值在内循环中被破坏

pushdi

moves,ax;

此时es为屏幕第12行中间的显存的段起始位置

movcx,10h;

内循环为10h次,因为一个字符串中含10h个字节

moval,ds:

[bx+si]

[bx+di],al

adddi,2

loops1;

此循环实现偶地址中存放字符

movsi,1;

si的值设为1,从而为在显存奇地址中存放字符的颜色属性做准备

popdi;

将di的值恢复成进入内循环之前的时候的值

10h[bx+di];

取颜色属性[源OP寻址方式:

相对基址变址]

第二个内循环也为10h次

[bx+si],al

loops2;

此循环实现奇地址中存放字符的颜色属性

以下4句为下一趟外循环做准备

incdi

popax

addax,0ah;

将显存的段起始地址设为当前行的下一行

[在段地址中加0ah,相当于在偏移地址中加了0a0h(=160d)]

loops3

实验10编写子程序(第194页)

1.显示子程序

Welcometomasm!

0

assumecs:

data

movdh,1;

dh装行号(范围:

1--25)

movdl,1;

dl装列号(范围:

1--80)[注:

每超过80等于行号自动加1]

movcl,0cah;

cl中存放颜色属性(0cah为红底高亮闪烁绿色属性)

callshow_str

int21h

show_str:

显示字符串的子程序[定义开始]

pushsi

moval,0A0h

decdh;

行号在显存中下标从0开始,所以减1

muldh

movbx,ax

moval,2

muldl

subax,2;

列号在显存中下标从0开始,又因为偶字节存放字符,所以减2

addbx,ax;

此时bx中存放的是行与列号的偏移地址

movax,0B800h

es中存放的是显存的第0页(共0--7页)的起始的段地址

moval,cl

movch,0

movcl,ds:

jcxzok

[bx+di],cl;

偶地址存放字符

[bx+di+1],al;

奇地址存放字符的颜色属性

ok:

popsi

ret;

显示字符串的子程序[定义结束]

2.解决除法溢出的问题(第197页)

code,ss:

movax,4240h

movdx,0fh

movcx,0ah

calldivdw

divdw:

;

子程序定义开始

pushax

movax,dx

movdx,0

divcx

movcx,dx

movdx,bx

子程序定义结束

3.数值显示(第198页)

db10dup(0)

movax,12666

movbx,data

movds,bx

calldtoc

movdh,8

movdl,3

movcl,0cah

dtoc:

数值显示的子程序定义

pushdx

pushbx

movcx,10d

divcx

movcx,ax

jcxzs2

adddx,30h

incbx;

再进行一次栈操作(补充当"

商为零而余数不为零"

时的情况)

movcx,bx

mov[si],al

loops3

okay:

popbx

popdx

数值显示的子程序定义结束

显示字符串的子程序已经在第一题中说明,在此不再赘述。

decdh

subax,2

addbx,ax

[bx+di],cl

[bx+di+1],al

ret

实验11编写子程序(第224页)

db"

Beginner'

sAll-purposeSymbolicInstructionCode."

begin:

callletterc

letterc:

子程序部分[开始]

moval,[si]

cmpal,0

jeexitsub

cmpal,61h;

61h为'

a'

的ASCII码

jbnext

cmpal,7ah;

7ah为'

z'

janext

andal,11011111B;

或使用subal,20h

next:

jmpshorts0

exitsub:

子程序部分[结束]

endbegin

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

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1