习题4Word下载.docx
- 文档编号:7866851
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:25
- 大小:23.58KB
习题4Word下载.docx
《习题4Word下载.docx》由会员分享,可在线阅读,更多相关《习题4Word下载.docx(25页珍藏版)》请在冰点文库上搜索。
REPSTOSW
【答】将CS中起始地址为0100h的256个字节单元清零。
2).MOVAL,08H
SALAL,01H;
(AL)=00010000H
MOVBL,AL
MOVCL,02H
SALAL,CL;
(AL)=01000000H
ADDAL,BL;
(AL)=01010000H
本程序实现了什么功能?
【答】(AL*2+AL*8)。
4.3试分析下列程序完成什么功能?
MOVDX,3F08H
MOVAH,0A2H
MOVCL,4
SHLDX,CL;
(DX)=F080H
MOVBL,AH
SHLBL,CL;
(BL)=20H
SHRBL,CL;
(BL)=02H
ORDL,BL;
(DL)=82H
【答】将3f08h的’8’存放在dl的高四位,0a2h的’2’存放在dl的低四位。
4.4已知程序段如下:
MOVAX,1234H
ROLAX,CL
DECAX
MOVCX,4
MULCX
试问:
(1)每条指令执行后,AX寄存器的内容是什么?
(2)每条指令执行后,CF,SF及ZF的值分别是什么?
(3)程序运行结束时,AX及DX寄存器的值为多少?
【答】MOVAX,1234H;
(AX)=1234HCF=SF=ZF=0
ROLAX,CL;
(AX)=2341HCF=1,SF=ZF=0
DECAX;
(AX)=2340HCF=1,SF=ZF=0
MOVCX,4;
MULCX;
(AX)=8000HCF=ZF=0,SF=1,DX=0
4.5试分析下列程序段:
ADDAX,BX
JNCL2
SUBAX,BX
JNCL3
JMPSHORTL5
如果AX、BX的内容给定如下:
AXBX
(1)14C6H80DCH(程序转向L2)
(2)B568H54B7H(程序转向SHORTL5)
问该程序在上述情况下执行后,程序转向何处?
【答】
(1)程序转向L2。
(2)程序转向SHORTL5。
4.6以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节?
DATASEGMENT
VAR1DW9;
2字节
VAR2DD10DUP(?
),2;
44字节
VAR3DB2DUP(?
,10DUP(?
));
22字节
VAR4DB‘HOWAREYOU'
;
11字节
DATAENDS
【答】该数据段共占79字节。
4.7下列语句在存储器中分别为变量分配多少字节空间?
并画出存储空间的分配图。
VAR1DB10,2;
VAR2DW5DUP(?
),0;
12字节
VAR3DB‘HOWAREYOU?
'
,‘$'
;
13字节
VAR4DD-1,1,0;
Var1
Var2
Var3
Var4
10
?
FFH
2
U
00H
O
Y
01H
E
R
A
W
H
$
4.8编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。
【答】参考程序:
OLDSDB1,2,3,4,5
NEWSDB1,2,3,4,5
RESULTDB?
MOVSI,OFFSETOLDS
MOVDI,OFFSETNEWS
MOVCX,10
REPCMPSB
JNZNOEQU;
串不相等转
MOVAL,0
JMPOUTPT
NOEQU:
MOVAL,0FFH
OUTPT:
MOVRESULT,AL
STOP:
JMPSTOP
4.9编程求和Y=A1+A2+….+A100。
其中Ai为字节变量。
DATASEGMENT
TABLEDW12,3,45,..
YALDW?
YAHDW?
DATAENDS
……….
MIANPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDX,0
XORAX,AX;
清AX
MOVBX,OFFSETTABLE
MOVCX,4
CLC
LP:
ADDAX,[BX];
求和
JNCDON
INCDX
CLC
DON:
INCBX
INCBX;
指向下一个数
LOOPLP;
未加完,继续
MOVYAL,AX;
存和
MOVYAH,DX
MAINENDP
CODEENDS
ENDSTART
4.10内存中以FIRST和SECOND开始的单元中存放着4字节非组合BCD码,低位在前。
编程序求这两个数的非组合的十进制和,并存到以THIRD开始的单元。
1325+9839=?
FIRSTDB05H,02H,03H,01H;
SECONDDB09H,03H,08H,09H;
THIRDDB20DUP(?
)
DATAENDS
STACKSEGMENT
ST1DB100DUP(‘SA’)
TOP1EQUST1LENGTHST1
STACKENDS
CODESEGMENT
ASUMMECS:
CODE,DS:
DATA,SS:
STACK
MAINPROCFAR
START:
MOVAX,DAT;
初始化数据段
MOVAX,STACK;
初始化堆栈段
MOVSS,AX
MOVAX,TOP1
MOVSP,AX
MOVCX,4;
计算4次
MOVBX,OFFSETDAT1;
取数据地址
MOVSI,OFFSETDAT2;
MOVDI,OFFSETSUM;
取结果地址
MOVAH,00H;
将暂存标志的AH清0
DON1:
MOVAL,[BX];
取第一个数
SAHF;
将AH中的标志送标志寄存器
ADCAL,[DI];
与第二个数带进位加
AAA;
十进制校正
LAHF;
将标志寄存器内容送AH
ORAL,30H;
计算值拼成ASCII码
MOV[DI],AL;
存结果的ASCII码
指向第一个数的下一位
INCSI;
指向第二个数的下一位
INCDI;
指向结果单元的下一位
LOOPDON1;
未计算完,继续
ANDAH,01H;
将最高位的进位标志送AH
ORAH,30H;
最高位的进位位拼成ASCII码
MOV[DI],AH;
存结果的最高位
MOVAH,02H;
调用DOS的02H功能显示
MOVCX,05H;
显示数据的位数
DON2:
MOVDL,[DI];
显示数据送DL
INT21H;
显示
DECDI;
显示数据所在存储单元加一
LOOPDON2;
未显示完,继续
MOVAH,4CH;
返回DOS
INT21H
RET
MAINENDP
CODEENDS
ENDSTART
4.11试编程序,统计由40000H开始的16K个单元中所存放的字符“A“的个数,并将结果存放在DX中。
【答】参考程序
DATASEGMENT
DATA1DB'
DFASFAAAFDFAAFFFA'
COUNTEQU$-DATA1
DATAENDS
STACKSEGMENT
STADB100DUP(?
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,TOP
MOVSP,AX
MOVCX,COUNT
LEASI,DATA1
MOVBL,'
A'
NEXT:
CMP[SI],BL
JNZOTHER
OTHER:
INCSI
LOOPNEXT
CODEENDS
ENDBEGIN
4.12统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。
BLOCKDB-1,-3,5,6,-2,0,20,10
PLUS_DDB8DUP(?
);
正数缓冲区
MINUS_DDB8DUP(?
负数缓冲区
PLUSDB0
MINUSDB0
MOVSI,OFFSETBLOCK
MOVDI,OFFSETPLUS_D
MOVBX,OFFSETMINUS_D
MOVCX,8;
数据个数送CX
GOON:
LODSB;
AL←[SI]
TESTAX,80H
JNZJMIUS;
为负数,转
INCPLUS;
正数个数加一
STOSB;
[DI]←AL,传正数
JMPAGAIN
JMIUS:
INCMINUS;
负数个数加一
XCHGBX,DI
STOSB;
送负数到缓冲区
XCHGBX,DI
DECCX
JNZGOON
4.13编写一个子程序将AX中的十六进制数,转换成ASCII码,存于ADR开始的四个单元中。
提示:
1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND指令,把提出的一个十六进制数置BL中;
2)、0~9的ASCII码:
30~39H,A~F的ASCII码:
41H~46H。
(先把每个数加30H,判断是否为数字0~9?
若是A~F,再加07H,得字母的ASCII码。
ADRDB4DUP(?
MAINPROCFAR
DATA
MOVAX,7EC3H;
假设ax中存放7ec3h
LEASI,ADR
MOVDL,4
AGAIN:
MOVBX,AX
ANDBX,000FH
ADDBL,30H
CMPBL,'
9'
JGADUST
JMPSTORE
ADUST:
ADDBL,07H
STORE:
MOV[SI],BL
INCSI
MOVCL,4
ROLAX,CL
DECDL
JNZAGAIN
MAINENDP
ENDSTART
4.14编写一个子程序将AX中的2进制数,转换成10进制ASCII码,存于ADR开始的五个单元中。
【答】参考程序:
BINEQU5555H;
假设二进制数为5555H
DATASEGMENT
ADRDB4DUP(?
DATA,SS:
MOVAX,BIN
LEABX,ADR
MOVCX,10000D
CALLBINTODEC
MOVCX,1000D
MOVCX,100D
CALLBINTODEC
MOVCX,10D
CALLBINTODEC
MOVCX,01D
MOVAX,04CH;
INT21H
;
十进制转二进制,完成一位运算,十进制存于ax中,结果存于bx所指向的地址中
BINTODECPROCNEAR
DIVCX
ADDAL,30H
MOV[BX],AL
MOVAX,DX
INCBX
RET
BINTODECENDP
4.15编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中。
JIAOYANPROCFAR
MOVAL,1001110B
ORAL,AL
JNPNEXT
MOVAL,0
JMPDONE
NEXT:
MOVAL,1
DONE:
MOVAH,04CH
JIAOYANENDP
4.16从2000H单元开始的区域,存放100个字节的字符串,其中有几个$符号(ASCII码为24),找出第一个$符号,送AL中,地址送DI。
SEARCHPROCFAR
MOVDI,2000H
MOVCX,100
MOVAL,24H
CLD
REPNZSCASB
DECDI
MOVAL,[DI]
SEARCHENDP
4.17用串操作指令实现:
先将100H个数从2170H单元处搬到1000H单元处,然后从中检索等于AL中字符的单元,并将此单元换成空格字符。
MAINPROCFAR
MOVSI,2170H
MOVDI,1000H
MOVCX,100H
REPMOVSB
MOVDI,1000H
DO:
REPNZSCASB
CMPCX,0
JZEND
MOV[DI],20H
INCDI
CMPCX,0
JNZDO
END:
HLT
ENDSTART
4.18从60H个元素中寻找一个最大的值,并放到AL中,假设这60个元素放在DATA1开始的单元中。
DATA1DB0,1,2,3,4,5,6,7,8,9;
STADB20DUP(?
TOPEQULENGTHSTA
MOVDS,AX
MOVAX,TOP
MOVSP,AX
MOVCX,10
LEABX,DATA1
CMPAL,[BX]
JGENEXT;
大于等于转移
MOVAL,[BX]
LOOPAGAIN
MOVAH,4CH
ENDSTART
4.19排序程序设计:
把表中元素按值的大小升序排列。
要求显示排序前和排序后的数据。
TABDB'
8095554'
N=$-TAB
OKDB0DH,0AH,'
OK!
$'
STACKSEGMENT
STADB20DUP(?
TOPEQULENGTHSTA
STACENDS
STAR:
MOVAX,DATA
MOVDS,AX;
CALLARRAY
MOVAH,4CH
INT21H;
ARRAYPROCNEAR
PUSHBX
PUSHCX
PUSHDX
MOVDL,N-1;
置外循环次数
MOVDH,1;
设有交换标志
XORBX,BX
UPPER:
ORDH,DH;
JZDISP;
无交换,已排好序,退出
MOVDH,0;
无交换
MOVCX,N-1
SUBCX,BX;
CX=CX-I内循环次数
MOVSI,0;
指向表首
INNER:
MOVAL,TAB[SI];
字符送AL
INCSI;
指向下个字符
CMPAL,TAB[SI];
比较表中相邻字符
JBEDON;
小于
XCHGAL,TAB[SI];
否则交换,大字符下
MOVTAB[SI-1],AL;
小字符上浮
有交换,DH=1
LOOPINNER;
内循环结束?
CX-1
INCBX;
一次内循环完成,加一
DECDL;
外循环次数减一
CMPDL,0
JNZUPPER;
外循环次数非零,继续
DISP:
MOVDX,OFFSETTAB
MOVAH,09H
INT21H;
显示排好序的字符
POPDX
POPCX
POPBX
POPAX
ARRAYENDP
ENDSTAR
4.20编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。
加密表为:
输入数字:
0,1,2,3,4,5,6,7,8,9;
密码数字:
7,5,9,1,3,6,8,0,2,4。
TABLEDB7,5,9,1,3,6,8,0,2,4;
密码表
str1DB0A,0Dh,’Pleaseinputthefourhexnumber:
$’
str2DB0Ah,0Dh,’Theresultis:
BUFFDB10DUP(?
),'
存放转换数字的缓冲区
STADB20DUP(?
MOVSS,AX
MOVDI,OFFSETBUFF
LEABX,TABLE
MOVCX,0DH
LEADX,str1
MOVAH,9
INT21H
RE1:
MOVAH,1;
从键盘输入
INT21H
CMPAL,0DH
JZDONE
SUBAL,30H
XLAT
ADDAL,30H
MOV[DI],AL
INCDI
LOO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题