微机原理.docx

上传人:b****1 文档编号:2583385 上传时间:2023-05-04 格式:DOCX 页数:15 大小:25.75KB
下载 相关 举报
微机原理.docx_第1页
第1页 / 共15页
微机原理.docx_第2页
第2页 / 共15页
微机原理.docx_第3页
第3页 / 共15页
微机原理.docx_第4页
第4页 / 共15页
微机原理.docx_第5页
第5页 / 共15页
微机原理.docx_第6页
第6页 / 共15页
微机原理.docx_第7页
第7页 / 共15页
微机原理.docx_第8页
第8页 / 共15页
微机原理.docx_第9页
第9页 / 共15页
微机原理.docx_第10页
第10页 / 共15页
微机原理.docx_第11页
第11页 / 共15页
微机原理.docx_第12页
第12页 / 共15页
微机原理.docx_第13页
第13页 / 共15页
微机原理.docx_第14页
第14页 / 共15页
微机原理.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理.docx

《微机原理.docx》由会员分享,可在线阅读,更多相关《微机原理.docx(15页珍藏版)》请在冰点文库上搜索。

微机原理.docx

微机原理

作业题:

P44

6答:

CF、PF、AF、ZF、SF、OF

7答:

580AH

+3456H

=

10答:

64K,20000H~2FFFFH

11答:

D00CH*16+2000H=D20C0H

15答:

时钟周期1/5M=0.2US,RESET需要4个时钟=0.8US

插入2个TW后时间=6个时钟=1.2US

P89

6、解:

3)MOVCX,3579h0011010101111001

SUBCX,4EC1H-0100111011000001

CF=1,OF=0,sf=1,zf=011110011010111000

7、解:

已知:

堆栈段起始地址:

2000:

0000,堆栈的大小100H,(SP)=200H

(4)存入2233H、4455H后,SP=200H-4=1FCH

Movax,2233h

Pushax

8、用逻辑指令完成:

(1)将AX的高4位清0:

 ANDAX,0FFFH

0fff0h

(2)将BX的低4位置1:

ORBX,000FH

(3)将DX:

AX中的32位数左移1位:

SHLAX,1

RCLDX,1

(4)实现AL中的无符号数乘以20

MOVAH,0;将AL的8位数扩展到16位

  MOVBX,AX; 备份

  MOVCL,4

SHLAX,CL;乘以16

  MOVCL,2

SHLBX,CL;乘以4

ADDax,bx

(利用算术指令:

   MOVBL,20

MULBL)

9解:

 (1)将AX中间8位做高8位,BX低4位和DX高4位做低4位拼成一个新字

  MOVCL,4

SHLAX,CL

ANDAX,0FF00H

ANDBX,000FH

Movcl,4

Shlbl,cl

MOVCL,12

SHRDX,CL

ORBX,DX

ORAX,BX

(2)将数据段中以BX为偏移地址的连续3单元中的无符号数求和

解:

 

XORAX,AX

MOVAL,[BX]

ADDAL,[BX+1]

ADCAH.,0

ADDAL,[BX+2]

ADCah,0

(3)将数据段中以BX为偏移地址的连续4单元内容颠倒过来

解:

方法1:

;1和4单元交换

MOVAL,[BX]

XCHGAL,[BX+3]

MOV[BX],AL

;2和3单元交换

MOVAL,[BX+1]

XCHGAL,[BX+2]

MOV[BX+1],AL

(4)将bx中的4位压缩bcd用非压缩bcd数形式按高低顺序存放在AL,BL,CL,DL中

MOVSI,bx

ANDBH,0F0H

MOVCL,4

SHRBH,CL

MOVAL,BH

MOVBX,SI

ANDBH,0FH

MOVBL,BH

PushAX

PUSHBX

MOVBX,SI

ANDBL,0F0H

MOVCL,4

SHRBL,CL

MOVCL,BL

MOVBX,SI

ANDBH,0FH

MOVDL,BL

POPBX

POPAX

 

   

10、把unpacked开始的16位非组合BCD码转换成组合BCD,并把结果存放在packed开始的单元里

解:

(假设非压缩BCD的高4位=0)

MOVDX,8

LEASI,UNPACKED

LEADI,PACKED

LOP:

MOVAL,[SI]

MOVCL,4

SHLAL,CL

ADDAL,[SI+1]

MOV[DI],AL

INCDI

INCSI

INCSI

DECDX

DJNZLOP

HLT

 

11

11、在不改变AL值得同时,检测AL中1的个数,将结果放在BL中

MOVBL,0

MOVAH,AL

NEXT:

CMPAH,0

JZEXIT

JNSSHIFT

INCBL

SHIFT:

SHLAH,1

JMPNEXT

EXIT:

HLT

4.7Page132

4

(1)BUFF1DB200DUP(?

(2)BUFF1DB200DUP(0)

(3)BUFF3DB‘abc’,’123’

5AL=24H,

BX=1234H

CX=没有答案

DI=5678H

DX=4524H

PLEN=26

9

(1)WRONG

(2)RIGHT(3)RIGHT(4)WRONG(5)WRONG

11答:

显示字符串

12答:

sum=2+4+6+8+…+40

16答:

CRLFMACRO

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

ENDM

STACKSEGMENT

STADW32DUP(?

TOPDW?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

CALLGETNUM;读取键入的16进制数送DX

GETNUMPROCNEAR;子程序

PUSHCX;保护CX寄存器中的值

XORDX,DX;DX清0

GGG:

MOVAH,01H

INT21H

CMPAL,0DH

JZPPP

SUBAL,30H;

JBKKK

CMPAL,0AH

JBGETS;在‘0’~‘9’间转GETS

CMPAL,11H

JBKKK;非数字转KKK

SUBAL,07H;’A’~’F’变为0A~0FH

CMPAL,0FH;’a’~’f’变为2A~2FH

JBEGETS;在‘A’~‘F’间转gets

CMPAL,2AH‘a’~’f在AL中变为2A~2FH

JBKKK

CMPAL,2FH;’

JAKKK;不在‘a’~’f’间转KKK

SUBAL,20H;’a’~’f’间的ASCII码转化为16进制数值

GETS:

MOVCL,04

SHLDX,CL

XORAH,AH

ADDDX,AX;将本次键入的数字加进DX中

JMPGGG;接收下一个键入的数字

KKK:

MOVAH,09H

MOVDX,OFFSETERROR

INT21H;显示输入出错信息

PPP:

PUSHDX

CRLF

POPDX

POPCX

RET

GETNUMENDP

CODEENDS

ENDSTART

参考程序:

////////////////***********

;Hex2Dec-Mainprogram

;Convertshextodecimal

datasegment

ddecdb5dup(?

countequ$-ddec

dataends

hex2decsegment

assumeds:

data,cs:

hex2dec

start:

movax,segdata

movds,ax

movax,offsetddec+count-1

movsi,ax

callhex2bin

xordx,dx

movax,bx

movcx,0Ah

divcx

mov[si],dl

xordx,dx

decsi

divcx

mov[si],dl

xordx,dx

decsi

divcx

mov[si],dl

xordx,dx

decsi

divcx

mov[si],dl

xordx,dx

decsi

divcx

mov[si],dl

xordx,dx

callnewline

movcx,5

movsi,offsetddec

shw:

movdl,[si]

calldispchar

incsi

loopshw

movah,4ch

int21h

hex2binproc

xorbx,bx

newchar:

movah,01h

int21h

subal,30h

jlexit

cmpal,09h

jlEok

subal,07h

cmpal,0fh

jlEok

subal,20h

cmpal,0fh

jgexit

ok:

cbw

xchgax,bx

movcx,16

mulcx

xchgax,bx

addbx,ax

jmpnewchar

exit:

RET

hex2binendp

dispcharPROC;displaythenumberwithaspaceinDL

adddl,30h

MOVAH,02h

INT21h

RET

dispcharENDP

newlinePROC;Startanewline

MOVDL,0Dh

MOVAH,02h

INT21h

MOVDL,0Ah

INT21h

RET

newlineENDP

hex2decends

endstart

//*****************

20答:

DATASEGMENT

STRINGDB?

......

COUNTEQU$-STRING

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEABX,STRING;设串的地址指针

MOVDL,0;DL计数初值0

MOVCX,COUNT;串长度

AGAIN:

CMP[BX],20H

JZA1

INCDL;串长度加1

A1:

INCBX

LOOPAGAIN

CALLDISP

MOVAH,4CH

INT21H

;显示DL中的16进制数子程序

DISPPROCNEAR

MOVAL,DL;暂时保存在AL

ANDAL,0F0H;取该数的高4位;

MOVCL,4

SHRAL,CL

CALLCHANGE;调用子程序计算高4位ASCII码并显示

MOVAL,DL;重新取该字节数据

ANDAL,0FH;取该数的低4位;

CALLCHANGE;计算低4位的ASCII码并显示

RET

DISPENDP

//得到16进制数的ASCII码

CHANGEPROC

CMPAL,10

JLADD_0

ADDAL,7

ADD_0:

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

RET

CHANGEENDP

CODEEND

ENDSTART

作业3.4PAGE88

8、

9、

10、

11、

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2