《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx

上传人:b****2 文档编号:15240632 上传时间:2022-10-28 格式:DOCX 页数:18 大小:59.44KB
下载 相关 举报
《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx_第1页
第1页 / 共18页
《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx_第2页
第2页 / 共18页
《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx_第3页
第3页 / 共18页
《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx_第4页
第4页 / 共18页
《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx

《《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx》由会员分享,可在线阅读,更多相关《《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

《汇编语言与接口技术》答案习题解答第三章Word文档格式.docx

next:

movsignX,-1

.exit0

end

3.20解:

movdl,’2’

movax,bufX

cmpax,bufY

jenext1

decdl

next1:

cmpax,bufZ

jenext2

next2:

3.22编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。

wjxt322.asm

b_datadb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h;

原始数据

numequ10;

数据个数

sumdb?

预留结果单元

xorsi,si;

位移量清零

xoral,al;

取第一个数

movcx,num;

累加次数

again:

addal,b_data[si];

累加

incsi;

指向下一个数

loopagain;

如未完,继续累加

movsum,al;

完了,存结果

3.30解:

lucaseproc

pushbx

movbx,offsetstring

cmpal,0

jecase0

cmpal,1

jzcase1

cmpal,2

jzcase2

case0:

cmpbyteptr[bx],0

jedone

cmpbyteptr[bx],’A’

jbnext0

cmpbyteptr[bx],’Z’

janext0

addbyteptr[bx],20h

next0:

incbx

jmpcase0

case1:

cmpbyteptr[bx],’a’

jbnext1

cmpbyteptr[bx],’z’

janext1

subbyteptr[bx],20h

jmpcase1

case2:

jbnext2

janext20

jmpnext2

next20:

janext2

jmpcase2

popbx

ret

lucaseendp

习题3.1解答:

参考教材(第60页)

习题3.6

问题:

⏹给出你采用一个源程序格式书写的例题3.1源程序

解答:

.modelsmall

.stack

.data

stringdb’Hello,Assembly!

’,0dh,0ah,’$’

.code

start:

movax,@data

movds,ax

movdx,offsetstring

movah,9

int21h

movax,4c00h

endstart

习题3.12解答:

ORG伪指令

习题3.13解答:

段地址和偏移地址属性,类型属性

习题3.26

⏹过程定义的一般格式是怎样的?

子程序开始为什么常有PUSH指令、返回前为什么常有POP指令?

下面完成16位无符号数累加的子程序有什么不妥吗?

若有,请改正:

crazyPROC;

crazyPROC

pushax;

xorax,ax;

xorax,ax

xordx,dx;

xordx,dx

addax,[bx];

addax,[bx]

adcdx,0;

adcdx,0

incbx;

loopagain;

loopagain

ret;

ENDPcrazy;

crazyENDP

字量求和子程序

入口参数:

BX=数据首址

CX=数据个数

出口参数:

AX=和的低字

DX=和的高字

(进位部分)

习题3.28

⏹请按如下说明编写子程序:

;

子程序功能:

把用ASCII码表示的两位十进制数转换为对应二进制数

DH=十位数的ASCII码,DL=个位数的ASCII码

AL=对应的二进制数

asctobproc

pushcx

先转换十位数

anddh,0fh

shldh,1;

乘以10

movch,dh

shldh,1

adddh,ch

转换个位数

anddl,0fh

十位数加个位数

adddh,dl

设置出口参数

moval,dh

popcx

ret

asctobendp

习题3.34-1

⏹编写一个计算字节校验和的子程序。

所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。

主程序提供入口参数,有数据个数和数据缓冲区的首地址。

子程序回送求和结果这个出口参数。

传递参数方法自定。

数据段

arraydb12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h

countequ$-array;

数组元素个数

resultdb?

校验和

代码段(主程序)

movbx,offsetarray;

BX←数组的偏移地址

movcx,count;

CX←数组的元素个数

callchecksum;

调用求和过程

movresult,al;

处理出口参数

习题3.34-2

代码段(子程序)

计算字节校验和的通用过程

DS:

BX=数组的段地址:

偏移地址

CX=元素个数

AL=校验和

说明:

除AX/BX/CX外,不影响其他寄存器

checksumproc

xoral,al;

累加器清0

sum:

addal,[bx];

求和

指向下一个字节

loopsum

checksumendp

〔习题3.17〕

已知用于LED数码管的显示代码表为:

LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db80h,90h,88h,83h,0c6h,0c1h,86h,8eh

它依次表示0~9、A~F这16个数码的显示代码。

现编写一个程序实现将lednum中的一个数字(0~9、A~F)转换成对应的LED显示代码。

〔解答〕

;

LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db80h,90h,88h,83h,0c6h,0clh,86h,8eh

lednumdb0ah

代码段

movbx,offsetLEDtable

moval,lednum

xlat;

al中存有对应的LED显示代码

〔习题3.21〕

例题3.7中,如果要实现所有为1的位都顺序执行相应的处理程序段(而不是例题中仅执行最低为1位的处理程序段),请写出修改后的代码段。

代码段

moval,number

movbx,0;

BX←记录为1的位数

restart:

cmpal,0;

AL=0结束

jzdone

shral,1;

最低位右移进入CF

jcnext;

为1,转移

incbx;

不为1,继续

jmpagain

pushax

pushbx

shlbx,1;

位数乘以2(偏移地址要用2个字节单元)

jmpaddrs[bx];

间接转移:

IP←[table+BX]

以下是各个处理程序段

fun0:

movdl,'

0'

jmpdisp

fun1:

1'

fun2:

2'

fun3:

3'

fun4:

4'

fun5:

5'

fun6:

6'

fun7:

7'

disp:

movah,2;

显示一个字符

popbx

popax

jmprestart

〔习题3.24〕

编写计算100个正整数之和的程序。

如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘Overflow!

’。

countequ100

parraydwcountdup(?

);

假设有100个数据

wordsumdw0

msgdb‘overflow’,’$’

movcx,count

movax,0

movbx,offsetparray

jncnext

movdx,offsetmsg

int21h;

显示溢出信息

jmpdone;

然后,跳出循环体

addbx,2

loopagain

movwordsum,ax

〔习题3.25〕

编程把一个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。

转换算法可以是:

用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;

依次用余数除以100、10和1,得到“百位”、“十位”和“个位”。

wjxt325.asm

.model

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

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

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

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