微机原理习题4答案.doc
- 文档编号:1262359
- 上传时间:2022-10-19
- 格式:DOC
- 页数:10
- 大小:70.50KB
微机原理习题4答案.doc
《微机原理习题4答案.doc》由会员分享,可在线阅读,更多相关《微机原理习题4答案.doc(10页珍藏版)》请在冰豆网上搜索。
习题4:
请编写完整汇编程序:
1.内存中以BUF单元开始存放8个16位二进制数,试编程将8个数倒序后存放于BUF开始的单元,试编程;(提示:
采用堆栈实现)
DATASEGMENT
ORG0000H
BUFDW1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H
COUNTEQU($-BUF)/2
DATAENDS
STACK1SEGMENTSTACK
DW256DUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK1,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK1
MOVSS,AX
LEASI,BUF
MOVCX,COUNT
LOP1:
MOV AX,[SI]
PUSHAX
INCSI
INCSI
LOOPLOP1
LEASI,BUF
MOVCX,COUNT
LOP2:
POPAX
MOV [SI],AX
INCSI
INCSI
LOOPLOP2
CODEENDS
ENDSTART
2.将8个16位无符号数相加,结果保存在32位无符号数SUM中;
DATASEGMENT
BUFDW1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H
COUNTEQU($-BUF)/2
SUMDD0
DATAENDS
STACK1SEGMENTSTACK
DW100DUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
LEABX,BUF
MOVCX,COUNT
MOVDX,0000H
LOP:
MOVAX,[BX]
ADDWORDPTRSUM,AX
ADCWORDPTRSUM+2,DX
INCBX
INCBX
LOOPLOP
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
3.以十进制形式在计算机屏幕上显示内存中的一个8位有符号数,例如:
若内存单元中存放的数据为7FH,则在屏幕上显示+127,若内存单元存放的数据为0FFH,则应在屏幕上显示-1;
DATASEGMENT
VAR DB 0FFH
STR1DB'THERESULTIS:
$'
DATAENDS
SS_SEGSEGMENTSTACK
DW 100DUP(0)
SS_SEGENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SS_SEG
START:
MOV AX,DATA
MOV DS,AX
LEA DX,STR1
MOV AH,09H
INT 21H
MOV DL,'+'
CMP VAR,0
JGENEXT
MOV DL,'-'
NEG VAR
NEXT:
MOV AH,02H
INT 21H
MOV AL,VAR
MOV BL,10
MOV CL,0
LOP1:
AND AH,0
DIV BL
PUSH AX
INC CL
CMP AL,0
JNZ LOP1
LOP2:
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
LOOP LOP2
MOVAX,4C00H
INT 21H
CODEENDS
ENDSTART
4.从键盘输入一个4位十进制数,然后以16进制形式显示在屏幕上,试编程;
例如:
输入1024在屏幕上应该显示0400H
DATASEGMENT
STR1DB'INPUTDATA:
$'
BUF DB 20
DB 4
DB 4DUP(?
)
STR2DB0AH,0DH,'THERESULTIS:
','$'
DATAENDS
SS_SEGSEGMENTSTACK
DB 100DUP(0)
SS_SEGENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SS_SEG
START:
MOV AX,DATA
MOV DS,AX
LEA DX,STR1
MOV AH,09H
INT 21H
MOV AH,0AH
LEA DX,BUF
INT 21H
MOV CX,03H
LEA SI,BUF+2
AND BX,0H
MOV DL,0AH
LOP1:
MOV AL,[SI]
SUB AL,30H
PUSH CX
LOP2:
MUL DL
LOOPLOP2
POP CX
ADD BX,AX
INC SI
LOOP LOP1
AND CH,00H
MOV CL,[SI]
SUB CL,30H
ADD BX,CX
LEA DX,STR2
MOV AH,09H
INT 21H
MOV AX,BX
ANDCH,00H
MOV CL,04H
MOV DH,04H
MOV DL,00H
AAA1:
AND AX,000FH
PUSH AX
DEC DH
INC DL
SHR BX,CL
MOV AX,BX
CMP DH,0
JA AAA1
MOVCL,DL
BBB:
POP DX
CMP DL,09H
JB NEXT
ADD DL,07H
NEXT:
ADD DL,30H
MOV AH,2
INT 21H
LOOP BBB
MOV DL,'H'
MOV AH,02H
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
5.数据段中存放有一个无符号字数据VAR,将其转换成非压缩格式的BCD码,存于BUF开始的单元中(高位在前);
例如:
若VAR为0800H,则转换后(BUF)=20H (BUF+1)=48H
DATASEGMENTPARA
VAR DW 0800H
BUF DB 2DUP(0)
DATAENDS
SS_SEGSEGMENTSTACK
DW 100DUP(0)
SS_SEGENDS
CODESEGMENTPARA
ASSUMECS:
CODE,DS:
DATA,SS:
SS_SEG
START:
MOV AX,DATA
MOV DS,AX
MOV CX,16
MAIN1:
SHL VAR,1
MOV BX,4
PUSH CX
MOV CX,5
MAIN2:
MOV AL,BUF[BX]
ADC AL,AL
AAA
MOV BUF[BX],AL
DEC BX
LOOP MAIN2
POP CX
LOOP MAIN1
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
ENDSTART
6.内存中以str1和str2开始分别存放了两个字符串,结束符为NULL(ASCII码为0),将str2连接到str1后,形成1个字符串,并将连接后的字符串str1输出到屏幕上;
DATASEGMENT
STR1 DB 'GOODMORNING,',00H
STR DB 50DUP(0)
STR2 DB 'MrWANG!
',0AH,0DH,00H
DATAENDS
SS_SEGSEGMENTSTACK
DW 100DUP(0)
SS_SEGENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
SS_SEG
START:
MOVAX,DATA
MOV DS,AX
LEASI,STR1
MOV AL,[SI]
CMP AL,00H
JE JP1
JP2:
INC SI
MOV AL,[SI]
CMP AL,00H
JA JP2
JP1:
MOV CX,01H
LEA BX,STR2
MOV AH,[BX]
MOV [BX],AH
CMP AH,00H
JE JP3
MOV [SI],AH
JP4:
INC SI
INC BX
INC CX
MOV AH,[BX]
MOV [SI],AH
CMP AH,00H
JA JP4
JP3:
INCSI
MOV[SI],BYTEPTR'$'
LEA DX,STR1
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
7.统计10个有符号字节数中,大于0、小于0、等于0的个数,分别存放在NUM1、NUM2、NUM3三个变量中,并找出最大值、最小值分别存放到MAX、MIN变量中,再求10个数的和,将结果存放到16位有符号数SUM中。
DATASEGMENT
NUM DB 0F0H,03H,0B4H,0AH,0AAH,00H,80H,7FH,99H,21H
COUNT EQU ($-NUM)
ORG 0010H
NUM1 DB 0
NUM2 DB 0
NUM3 DB 0
MIN DB 0
MAX DB 0
SUM DW 0
DATAENDS
SS_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)