全部的作业微机原理的.docx
- 文档编号:9824565
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:336.09KB
全部的作业微机原理的.docx
《全部的作业微机原理的.docx》由会员分享,可在线阅读,更多相关《全部的作业微机原理的.docx(19页珍藏版)》请在冰点文库上搜索。
全部的作业微机原理的
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全部 作业 微机 原理