全部的作业微机原理的.docx

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

全部的作业微机原理的.docx

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

全部的作业微机原理的.docx

全部的作业微机原理的

2.16

物理地址:

CS:

12000H

IP:

+FF00H

=21F00H

第三章作业

3.2MOVAX,DS:

[2000H]是将DS段中2000H所在地址的内容传送至AX

3.4

(1)错

(2)对

(3)错不能加地址

(4)错

(5)错不能将存储器中的内容放到存储器中

(6)对

(7)对

(8)错CS不能被写只能被读

(9)对

3.6MOVAL,[3000H]

MOV[2000H],AL

3.11立即寻址方式寄存器操作数寻址方式存储器操作数寻址方式

是寄存器操作数寻址方式

3.13当SP或BP寄存器用作为基地址时,SS段是默认段地址;

其他情况下,DS段是默认段地址。

3.15MOVBYTEPTR[BP],200是将数字“C8H”移入寄存器[5200H][6200H];

MOVWORDPTR[BX],2000是将数字“7D0H”移入寄存器[2100H][1400H]

3.19因为有符号乘法指令为IMUL,无符号乘法指令为MUL。

3.30

(1)当前栈顶地址为FE00H

(2)执行指令后栈顶地址为FDFE;栈顶两个字节的内容是3457H

4.1在下列程序运行后,给相应的寄存器佶存储器单元填入运行的结果。

moval,10h

movcx,1000h

movbx,2000h

mov[cx],al

xchgcx,bx

movdh,[bx]

movdl,01h

xchgcx,bx

mov[bx],dl

hlt

结果:

Ds:

1000=10h

Ds:

2000=01h

Cx=1000h

Bx=2000h

Dx=1001h

Al=10h

4.11自0500h单元开始,有10个无符号数,编写程序,求这十个数的和(用八位数运算指令),把和放到050a和050b单元中(和用两个字节表示),且高位在050b单元。

datasegment

numdb1ah,2ah,34h,56h,7bh,7ch,27h,38h,49h,6eh

;theresultis02DB

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movbl,0

movsi,050ah

mov[si],bl

movsi,050bh

mov[si],bl

movsi,0500h

movdi,0

movbx,050ah

movcx,10

loop1:

moval,num[di]

mov[si],al

movah,[si]

add[bx],ah

incsi

incdi

adcbyteptr[bx+1],0

clc

looploop1

movax,4c00h

int21h

codeends

endstart

4.4利用变址寄存器,编写一段程序,把自1000h单元开始的100个数传到自1070h开始的存储区中。

datasegment

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,99

movsi,1000h

movdi,1070h

loop1:

movax,[si]

mov[di],ax

incsi

incdi

looploop1

movax,4c00h

int21h

codeends

endstart

 

4.17若在存储器中有数a,b,c,d(他们连续存放),编写一个程序实现下列算式:

((a*10+b)*10+c)*10+d(和<=65535)

datasegment

numdw001ah,0026h,002ch,0045h

;theresultis7665

resultdw1dup(0)

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,0

movcx,3

movbx,000ah

movax,num[si]

loop1:

mulbx

incsi

incsi

addax,num[si]

looploop1

movresult,ax

movax,4c00h

int21h

codeends

endstart

4.18在0100H单元和010aH单元开始,存放两个各为10个字节的BCD数(

地址最低处放的是最低字节),求他们的和,且把和存入0114H开始的存储单元

中。

datasegment

num1db0a1h,0a2h,0a3h,0a4h,0a5h,0b1h,0b2h,0b3h,0b4h,0b5h

num2db0c1h,0c2h,0c3h,0c4h,0c5h,0d1h,0d2h,0d3h,0d4h,0d5h

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

clc

movbx,0114h

movsi,0

movdi,0

movcx,10

loop1:

movah,num1[si]

mov[di+0100h],ah

moval,num2[si]

mov[di+010ah],al

adcah,al

mov[bx],ah

incsi

incdi

incbx

looploop1

moval,0

mov[bx],al

adcbyteptr[bx],0

movax,4c00h

int21h

codeends

endstart

结果如图:

018B89878583B669676562.

4.20在0200H单元中开始放有数A(低位在前):

NA=95437862310456289101

在020AH单元中开始放有数B:

NB=78964238154078218450

求两数之差,且把值送入自0200H开始的存储区。

datasegment

nadb95h,43h,78h,62h,31h,04h,56h,28h,91h,01h

nbdb78h,96h,42h,38h,15h,40h,78h,21h,84h,50h

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

clc

movbx,0200h

movsi,0

movdi,0

movcx,10

loop1:

movah,na[si]

mov[di+0200h],ah

moval,nb[si]

mov[di+020ah],al

sbbah,al

mov[bx],ah

incsi

incdi

incbx

looploop1

moval,0

mov[bx],al

sbbbyteptr[bx],0

movax,4c00h

int21h

codeends

endstart

结果为负数:

FFB10D06DDC41C2A35AD1D

4.37若自0500H单元开始有1000个带符号数,把它们的最小值找出来,并且

放在1000H单元中。

datasegment

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,1000

moval,0

movsi,0500h

loop1:

cmpal,[si]

jlnext

moval,[si]

next:

incsi

looploop1

movsi,1000h

mov[si],al

movax,4c00h

int21h

codeends

endstart

4.56若自STRING单元开始存放一个字符串(以字符$结尾),编写一个程序

,统计这个字符串的长度(不包括$字符),并把字符串的长度放在STRING

单元,把整个字符串下移两个存储单元。

datasegment

STRINGdb'abcdefghijklmn$'

lengdw0

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,0

next:

movcl,STRING[si]

incsi

cmpcl,'$'

jnenext

decsi

movax,si

movcx,si

inccx

inccx

incsi

loop1:

movbl,STRING[si]

movSTRING[si+2],bl

decsi

looploop1

movwordptrSTRING,ax

movax,4c00h

int21h

codeends

endstart

4.70编写一个24为无符号数相乘的程序。

datasegment

num1dw0012h,3456h

num2dw0065h,4321h

resultdw4dup(0)

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movax,num1+2

movsi,num2+2

mulsi

movresult+6,ax

movresult+4,dx

movax,num1

mulsi

addresult+4,ax

adcresult+2,dx

movax,num1+2

movsi,num2

mulsi

addresult+4,ax

adcresult+2,dx

lahf

movch,ah

movax,num1

mulsi

addresult+2,ax

adcresult,dx

movah,ch

sahf

adcresult,0

movax,4c00h

int21h

codeends

endstart

4.75若自STRING开始有一个字符串(以#号作为字符串的结束标志),编写一个程序,查找此字符串中有没有字符$,有多少个$(放在NUMBER单元中,没有$则其为0,否则即为$的个数);且把每一个$字符所存放的地址存入自POINTR开始的连续的存储单元中。

datasegment

STRINGdb'$ab$cde$fghij$klm$n#'

NUMBERDw0

POINTRDw0

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,0

movdi,0

next:

movcl,STRING[si]

leabx,STRING[si]

incsi

cmpcl,'#'

jeover

cmpcl,'$'

jefound

jmpnext

found:

movPOINTR[di],bx

incdi

jmpnext

over:

movNUMBER,di

movax,4c00h

int21h

codeends

endstart

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

当前位置:首页 > 初中教育 > 语文

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

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