汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx

上传人:b****4 文档编号:17784673 上传时间:2022-12-10 格式:DOCX 页数:47 大小:39.21KB
下载 相关 举报
汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx_第1页
第1页 / 共47页
汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx_第2页
第2页 / 共47页
汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx_第3页
第3页 / 共47页
汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx_第4页
第4页 / 共47页
汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx

《汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。

汇编语言程序设计钱晓捷课后答案Word文档下载推荐.docx

AL=12h 

1

AL=0afh 

AL=00h 

AL=0ffh 

1AL=00h 

7W=X+Y+24-Z

8

(1)ADDDX,BX

(2)ADDAL,[BX+SI]

(3)ADD[BX+0B2H],CX

(4)ADDWORDPTR[0520H],3412H

(5)ADDAL,0A0H

2.9;

为了避免与操作数地址混淆,将题中X,Y,Z,V字操作数改为A,B,C,D

movax,X 

ax=A 

imulY 

dx,ax=A*B 

(将操作数看作符号数,以下同)

movcx,ax 

movbx,dx 

bx,ax 

〈-— 

dx,ax=A*B 

movax,Z 

ax=C 

cwd 

dx,ax=C 

(扩展符号后为双字)

addcx,ax 

adcbx,dx 

bx,cx〈——bx,cx+dx,ax=A*B+C

subcx,540 

sbbbx,0 

;

bx,cx<

-—A*B+C—540 

movax,V 

ax=D 

dx,ax=D 

(扩展符号后为双字) 

subax,cx 

sbbdx,bx 

dx,ax=dx,ax—bx,cx=D-(A*B+C—540)

idivX;

运算结果:

[D—(A*B+C-540h)]/A;

ax存商,dx存余数

10;

(1)xchg的操作数不能是立即数

(2不能对CS直接赋值

(3)两个操作数不能都是存储单元

(4)堆栈的操作数不能是字节量

(5)adc的操作数不能是段寄存器

(6)没有确定是字节还是字操作

(7)in不支持超过FFH的直接寻址

(8)out只能以AL/AX为源操作数

第二章(02)

11;

指令

AX的值

CF

OF

SF

ZF

PF

Mov 

ax,1407h

1470h

-

And 

ax,ax

Or 

Xor 

Not 

ax

0ffffh

Test 

ax,0f0f0h

注意:

1.mov,not指令不影响标志位

2。

其他逻辑指令使CF=OF=0,根据结果影响其他标志位。

第2章(03)

2.12;

指令 

注释 

执行结果 

CFOFSFZFPF

movsi,ax 

si=ax 

si=0008h 

— 

-

shlsi,1 

si=2*ax 

si=0010h 

0

addsi,ax 

si=3*ax 

si=0018h 

movdx,bx 

dx=bx 

dx=0010h 

movcl,03h 

cl=03h 

shldx,cl 

dx=8*bx 

dx=0080h 

subdx,bx 

dx=7*bx 

dx=0070h 

adddx,si 

dx=7*bx+3*ax 

dx=0088h 

1。

左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方。

2.移位指令根据是否移入“1”到CF,设置CF,根据移位后的结果影响SF,ZF,PF。

根据最高符号位是否改变设置OF,如改变OF=1.

3。

‘u'

表示无定义,‘—’表示无影响。

2.13;

(1)

不考虑进位movbl,al

movcl,3

shlal,cl

addal,bl 

shlbl,1

addal,bl

考虑进位xorah,ah

movbx,ax

shlax,cl

addax,bx 

shlbx,1

addax,bx

(2)

数字0~9的ASCII码是:

30h~39h

非压缩BCD码的0~9是:

00h~09h

方法一:

andal,0fh 

实现ASCII到非压缩BCD码的转换

oral,30h 

实现非压缩BCD码到ASCII的转换

方法二:

xoral,30h 

求反D5D4位,其他不变

即高4位为3,则变为0;

高4位为0,则变为3

movcl,4

again:

shrdx,1 

实现逻辑右移

采用“sardx,1”,则实现算术右移

rcrax,1

deccl

jnzagain

14;

(1)用sar编写

2.20;

8086的条件转移的转移范围:

在当前指令地址的+127——-—-128之内。

如条件转移的转移范围超出此范围,可在此范围内安排一条无条件转移,再转移到范围外的目标地址.

21;

(1)JMPBx 

转移的有效地址EA=BX=1256h

(2)JMPtABLE[Bx];

转移的有效地址EA=[ds:

20a1h+1256h]=[232f7]=3280h

(3)JMP[Bx][si] 

转移的有效地址EA=[ds:

1256h+528fh]=264e5h=2450h

2.22;

(1)xorax,1e1eh

jeequal

AX=1e1eh(异或后为0)

(2)testal,10000001b

jnzthere

AL的D0或D7至少有一位为1

(3)cmpcx,64h

jbthere

CX(无符号数)<64h

2.23;

movcx,0 

不循环,因为一进入循环就判cx=0?

如cx=0就退出循环

delay:

loopdelay

2.24;

(1)若DX>

DI,转到above执行

cmpdx,di

jaabove 

=jnbeabove

(2)若AX>

SI,转到greater执行

cmpax,si

jggreater 

=jnlegreater

(3)若CX=0,转到zero执行

cmpcx,0 

jcxzzero

jzzero 

(4)若AX-SI产生溢出,转到overflow执行;

cmpax,di

jooverflow

(5)若SI≤AX,转到less_eq执行;

cmpsi,ax 

cmpax,si

jleless_eq 

jgeless_eq

(6)若DI≤DX,转到below_eq执行。

cmpdi,dx 

cmpdx,di

jbebelow_eq

jaebelow_eq

25;

答:

将首地址为array得20个字的数组求和,并将结果存入total单元中。

26;

movsi,0

movdl,string[si] 

第1个字符送dl寄存器

movsi,5

movdh,string[si] 

第6个字符送dh寄存器

xorsi,si 

si清零

moval,buffer[si] 

第一字节

incsi

movah,buffer[si] 

第二字节

movcl,4

shlah,cl 

BCD码移到高半字节

oral,ah 

组合成压缩BCD码

movdl,al 

存入dl寄..

moval,buffer[si] 

第三字节

movah,buffer[si] 

第四字节

shlah,cl 

oral,ah 

movdh,al 

存入dh寄..

(3)

testdx,0f000h

jzzero

movax,-1

jmpdone

zero:

movax,0

done:

ret

(4)

leabx,buffer1 

leadx,buffer2

movcx,8 

8个字节

si=0 

clc 

CF=0

(5)

movax,0b800h

movds,ax 

段地址

地址偏移量si=0

xordx,dx 

和的高字dx=0

movcx,99 

加的次数

movax,[si] 

第一个数

again:

incsi 

指向下一个字单元

addax,[si] 

加下一个数

jnc 

noc 

无进位转

incdx 

有进位dx=dx+1

noc:

deccx 

次数-1

jnzcx,again 

非0继续加 

(6)

movsi,offsetstring

movcx,8000h 

32k=2^15=8000h

cmp[si],’$'

jnznext

mov[si],20h 

if[si]=’$’[si]〈-—'

'

next:

loopagain

(7)

si〈——0

movcx,100 

循环次数

decarray[si]

deccx

jnz 

again

(8)

xorsi,si 

si<

--0

coun:

cmpstring[si],’$’

je 

done

jmpcoun

ret 

27;

(1)使CF=0:

andax,ax 

orax,ax

(2)使AX=0:

xorax,ax 

andax,0 

movax,0

(3)同时使AX=0和CF=0:

andax,0;

xorax,ax;

subax,ax

29;

压缩BCD码加法:

AX←AX+BX

出口参数:

AX=BCD码和

2.34;

okmsg 

db‘OK’,‘$’errmsg 

db‘Error!

Overflow!

'

‘$’ 

… 

movax,X

subax,Y

movdx,offsetokmsg

jmpnext

overflow:

movdx,errmsg

next:

movah,9

int21h

错误:

movax,X

movdx,offsetokmsg 

db‘OK’,‘$’ 

movdx,errmsg 

错误1:

数据定义在代码中

movah,9

errmsgdb‘Error!

,‘$'

movdx,errmsg 

错误2:

缺少JMP指令

2.37;

xt237.asm

modelsmall

stack

.data

arraydb255

db0

array1db255dup(’$'

array2db0dh,0ah,’$’

code

.startup

movah,0ah 

键盘输入字符串

movdx,offsetarray

int21h

movdx,offsetarray2;

回车换行

movah,09h

movbx,offsetarray1

moval,[bx]

cmpal,’$'

jzdone

cmpal,’a’ 

小于a和大于z的字符不是小写字母

jbnext

cmpal,’z'

janext

subal,20h 

在a和z之间的字符才是小写字母,转换为大写

mov[bx],al 

保存到原位置

incbx

jmpagain

done:

movdx,offsetarray1

movah,09h

exit0

end

第三章(01)

3.1;

硬指令:

每个硬指令就是一个处理器指令,在CPU执行时产生相应功能;

伪指令:

伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。

3.2;

3.5;

⒈ 

编辑 

文本编辑程序 

汇编语言源程序.asm

⒉ 

汇编 

汇编程序 

目标模块文件.obj

⒊ 

连接 

连接程序 

可执行文件.exe或。

com

⒋ 

调试 

调试程序 

应用程序

6;

xt236。

asm 

简化段定义格式

.modelsmall;

定义程序的存储模式(小模式)

stack 

定义堆栈段(默认1024个字节)

.data 

定义数据段

str1 

ab’InputNumber:

0~9:

’,0dh,0ah,’$'

str2 

ab’Error!

,0dh,0ah,’$'

.cade 

定义代码段 

startup 

说明程序的起始点,建立ds,ss的内容。

movah,09h 

显示str1字符串

movdx,offsetstr1

gtekey:

movah,1 

调用BIOS判断按键功能

int16h

jz 

getkey 

如zf=0,无键按下,等待

cmp 

al,‘0’ 

有键按下,键值与‘0’比较

jberror 

如〈‘0'

,出错处理

cmpal,‘9’ 

有键按下,键值与‘9'

比较

jaerror 

如〉‘9'

出错处理

movah,02h 

调用DOS显示字符功能,显示该数字

movdl,al

.exit0 

终止程序执行,返回DOS

error:

出错,调用DOS功能显示str2字符串

movdx,offsetstr2

jmpgetkey 

等待按键

end 

汇编结束

7;

xt307。

asm

segment

dw512dup(?

ends

data 

segment

array1db255dup('

$’)

array2db0dh,0ah,’$’

dataends

codesegment’code’

assumecs:

code,ds:

data,ss:

start:

movax,data

movds,ax

movah,0ah 

movdx,offsetarray2;

movbx,offsetarray1

moval,[bx]

cmpal,’$'

cmpal,’z’

subal,20h 

mov[bx],al 

done:

movdx,offsetarray1

movax,4c00h

codeends

endstart

9;

(1)

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

当前位置:首页 > 经管营销 > 金融投资

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

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