第四章习题解答文档格式.docx

上传人:b****2 文档编号:15074963 上传时间:2022-10-27 格式:DOCX 页数:15 大小:18.24KB
下载 相关 举报
第四章习题解答文档格式.docx_第1页
第1页 / 共15页
第四章习题解答文档格式.docx_第2页
第2页 / 共15页
第四章习题解答文档格式.docx_第3页
第3页 / 共15页
第四章习题解答文档格式.docx_第4页
第4页 / 共15页
第四章习题解答文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第四章习题解答文档格式.docx

《第四章习题解答文档格式.docx》由会员分享,可在线阅读,更多相关《第四章习题解答文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

第四章习题解答文档格式.docx

将ah中的两组分开

anddl,0f0h 

屏蔽低高四位后送dl

原ah中的数据逻辑右移4次送dl

shrdl,cl;

dl:

1011

movcl,ah 

屏蔽高四位后送cl:

0100

andcl,0fh

〔习题4.4〕编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。

〔解答〕

getkey:

 

movah,1 

从键盘输入,出口:

al存键值

int21h

cmp 

al,'

a'

判键值是小写字母?

jb 

getkay

z'

ja 

subal,20h 

是小写字母转换为大写字母

movdl,al

movah,02h 

显示

〔习题4.5〕已知用于LED数码管显示的代码表为:

LEDtable 

DB0c0h,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显示代码。

.modelsmall

.stack256

.data

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

DB80h,90h,88h,83h,0c6h,0clh、86h,8eh

lednum 

DB?

.code

.startup

movbx,offsetLEDtable 

moval,lednum

xlat 

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

.exit0

end

〔习题4.10〕设变量bufX为有符号16位数,请将它的符号状态保存在signX,即:

如果X大于等于0,保存0;

如果X小于0,保存-1(ffh)。

编写该程序。

.stack

bufX 

dw-7

signX 

db?

cmpbufX,0 

;

testbufX,80h

jlnext 

jnznext

movsignX,0

jmpdone

next:

movsignX,-1

done:

.exit0

〔习题4.11〕bufX、bufY和bufZ是3个有符号16进制数,编写一个比较相等关系的程序:

(1)如果这3个数都不相等,则显示0;

(2)如果这3个数中有两个数相等,则显示1;

(3)如果这3个数都相等,则显示2。

bufx 

dw?

bufY 

bufz 

movax, 

bufX 

;

cmpx,y?

?

可以吗?

movbx, 

bufY

movcx, 

bufZ

movdl,'

0'

cmpax,bx

jnznext1

incdl

next1:

cmpax,cx

jnznext2

next2:

cmpbx,cx

jnznext3

next3:

cmpdl,’3’

jbnext4

movdl,’2’

next4:

movah,02h 

〔习题4.16〕编程实现把键入的一个字符,用二进制形式(0/1)显示出它的ASCII代码值。

.modelsmall

stri1 

db'

pleaseinput'

0dh,0ah,'

$'

mov 

dx,offsetstri1 

movah,09h

movah,01h 

int21h 

movcx,8 

again:

xordl,dl

shlal,1 

adcdl,'

:

dl=dl+’0’+cf:

如果cf=0,那么dl=30h;

如果cf=1,那么dl=0+30h+1=31h

movah,02h

loopagain 

〔习题4.17〕编写程序,要求从键盘接收一个数bellN(0~9),然后响铃bellN次。

pleaseinputnumber:

1--9'

again:

显示stri1,提示输入

movah,01h 

调用输入一个字符

int 

21h 

输入一个字符存在al中

cmpal,'

1'

判该字符,如不在‘1’--‘9’

jb 

again 

重新输入

9'

again

andal,0fh 

将31h和39h转换为1和9

在‘1’--‘9’,屏蔽高4位

movcl,al 

振铃次数送cx

xorch,ch

abc:

movdl,07h 

调用一次振铃

movah,02h

loopabc

〔习题4.19〕编写计算100个正整数之和的程序。

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

num 

equ100

wlist 

dwnumdup(?

wordsum 

error 

overflow.$'

movbx,offsetwlist

movcx,num

xorax,ax

addax,[bx]

jcnext

incbx

loopagain

mov[bx],ax

movdx,offseterror

movah,9

〔习题4.22〕过程定义的一般格式是怎样的?

子程序入口为什么常有PUSH指令、出口为什么有POP指令?

下面的程序段有什么不妥吗?

若有,请改正:

crazy 

PROC

pushax

xor

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

当前位置:首页 > 高中教育 > 小学教育

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

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