全部的作业微机原理的

发布 2022-09-04 22:42:28 阅读 7840

2.16

物理地址:cs: 1 2 0 0 0 h

ip: +f f 0 0 h

= 2 1 f 0 0 h

第三章作业。

3.2 mov ax,ds:[2000h]是将ds段中2000h所在地址的内容传送至ax

3.4 (1)错。

(2)对。3)错不能加地址。

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

6)对。7)对。

8)错 cs不能被写只能被读。

9)对。3.6 mov al,[3000h]

mov [2000h], al

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

是寄存器操作数寻址方式。

3.13当sp或bp寄存器用作为基地址时,ss段是默认段地址;

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

3.15 mov byte ptr[bp],200 是将数字“c8h”移入寄存器[5200h][6200h];

mov word ptr[bx],2000 是将数字“7d0h”移入寄存器[2100h][1400h]

3.19因为有符号乘法指令为imul,无符号乘法指令为mul。

3.30(1)当前栈顶地址为fe00h

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

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

mov al,10h

mov cx,1000h

mov bx,2000h

mov [cx],al

xchg cx,bx

mov dh,[bx]

mov dl,01h

xchg cx,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单元。

data segment

num db 1ah,2ah,34h,56h,7bh,7ch,27h,38h,49h,6eh

the result is 02db

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov bl,0

mov si,050ah

mov [si],bl

mov si,050bh

mov [si],bl

mov si,0500h

mov di,0

mov bx,050ah

mov cx,10

loop1:

mov al,num[di]

mov [si],al

mov ah,[si]

add [bx],ah

inc si

inc di

adc byte ptr[bx+1],0

clcloop loop1

mov ax,4c00h

int 21h

code ends

end start

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

data segment

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov cx,99

mov si,1000h

mov di,1070h

loop1:

mov ax,[si]

mov [di],ax

inc si

inc di

loop loop1

mov ax,4c00h

int 21h

code ends

end start

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

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

data segment

num dw 001ah,0026h,002ch,0045h

the result is 7665

result dw 1 dup(0)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov si,0

mov cx,3

mov bx,000ah

mov ax,num[si]

loop1:

mul bx

inc si

inc si

add ax,num[si]

loop loop1

mov result,ax

mov ax,4c00h

int 21h

code ends

end start

4.18 在0100h单元和010ah单元开始,存放两个各为10个字节的bcd数(

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

中。data segment

num1 db 0a1h,0a2h,0a3h,0a4h,0a5h,0b1h,0b2h,0b3h,0b4h,0b5h

num2 db 0c1h,0c2h,0c3h,0c4h,0c5h,0d1h,0d2h,0d3h,0d4h,0d5h

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

clcmov bx,0114h

mov si,0

mov di,0

mov cx,10

loop1:

mov ah,num1[si]

mov [di+0100h],ah

mov al,num2[si]

mov [di+010ah],al

adc ah,al

mov [bx],ah

inc si

inc di

inc bx

loop loop1

mov al,0

mov [bx],al

adc byte ptr [bx],0

mov ax,4c00h

int 21h

code ends

end start

结果如图:01 8b 89 87 85 83 b6 69 67 65 62 .

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

na=95 43 78 62 31 04 56 28 91 01

在020ah单元中开始放有数b:

nb=78 96 42 38 15 40 78 21 84 50

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

data segment

na db 95h,43h,78h,62h,31h,04h,56h,28h,91h,01h

nb db 78h,96h,42h,38h,15h,40h,78h,21h,84h,50h

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

clcmov bx,0200h

mov si,0

mov di,0

mov cx,10

loop1:

mov ah,na[si]

mov [di+0200h],ah

mov al,nb[si]

mov [di+020ah],al

sbb ah,al

mov [bx],ah

inc si

inc di

inc bx

loop loop1

mov al,0

mov [bx],al

sbb byte ptr [bx],0

mov ax,4c00h

int 21h

code ends

end start

结果为负数:ff b1 0d 06 dd c4 1c 2a 35 ad 1d

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

放在1000h单元中。

data segment

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov cx,1000

mov al,0

mov si,0500h

loop1:

cmp al,[si]

jl next

mov al,[si]

next:inc si

loop loop1

mov si,1000h

mov [si],al

mov ax,4c00h

int 21h

code ends

end start

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

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

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

data segment

string db 'abcdefghijklmn$'

leng dw 0

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov si,0

next:mov cl,string[si]

inc si

cmp cl,'$

jne next

dec si

mov ax,si

mov cx,si

inc cx

inc cx

inc si

loop1:

mov bl,string[si]

mov string[si+2],bl

dec si

loop loop1

mov word ptr string,ax

mov ax,4c00h

int 21h

code ends

end start

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

data segment

num1 dw 0012h,3456h

num2 dw 0065h,4321h

result dw 4 dup(0)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ax,num1+2

mov si,num2+2

mul si

mov result+6,ax

mov result+4,dx

mov ax,num1

mul si

add result+4,ax

adc result+2,dx

mov ax,num1+2

mov si,num2

mul si

add result+4,ax

adc result+2,dx

lahfmov ch,ah

mov ax,num1

mul si

add result+2,ax

adc result,dx

mov ah,ch

sahfadc result,0

mov ax,4c00h

int 21h

code ends

end start

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

微机原理作业

微型计算机原理及应用 作业。作业组别 十八。班级 机电一班姓名 学号 作业指导教师 任课教师 实验室教师 作业完成时间 2013年4月17日。目录。1题目一31 1题目分析31.2寄存器的应用说明31.3程序框图31.4详细程序41.5程序调试的情况42题目二42.1题目分析52.2寄存器及主存等的...

微机原理作业

微型计算机原理及应用 作业。作业组别 第30组。班级 12级轧钢二班。姓名 贾闯 学号 120101020023 指导教师 李艳文 完成时间 2015年 05 月。一 题目及题目分析描述及要求。题目 内存中source处存放着10个字节型数据,请记录每个字节数据中二进制位1的个数,并按照数据字节在前...

微机原理作业

微型计算机原理及应用 作业。作业组别 第十一组。班级 10级机控一班。姓名 孙策。学号 100107010140 作业指导教师 李艳文 作业完成时间 2013年4月9日。目录。第一题 1 一 题目分析 1 二 寄存器及主存应用说明 1 三 程序框图 1 四 详细程序 1 五 程序调试情况 2 第二题...