有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中以BLOCK为首地址的存储区域中存...

有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中以BLOCK为首地址的存储区域中存放了16个单字节带带符号为,欲求出这16个数的平均值,并将结果存放到AVERAGE单元,试设计实现这一功能的汇编语言程序段

第1个回答  2013-03-27
data segment
block db 16 dup(?)
average db 0
data ends

code segment
start: mov ax,data
mov ds,ax
xor ax,ax
lea si,block
mov cx,16
_Add: mov bl,[si]
add al,bl
adc ah,0
inc si
loop _Add
div ax,16
mov average,al

mov ax,4c00h
int 21h
code ends
end start
第2个回答  2013-03-28
你好,我来为你解答:
第一章
1.1
CPU 分析、控制并执行指令的部件
IP 指示下一条将要执行的指令的地址
SP 保存当前栈顶地址的寄存器
状态标志 指出指令操作结果的标志,如ZF,CF等。
控制标志 控制操作的标志,只有DF,IF,TF三个。
ALU 进行算术和逻辑运算的单元
存储器 存储程序、数据等信息的的记忆装置。
物理地址 CPU发出的访问存储器的地址信息。
偏移地址 相对于段起始地址的偏移量。
段地址 是逻辑段的起始地址。
1.2下列操作可使用哪些寄存器
·存放各种运算操作的数据:AX,BX,CX,DX,SP,BP,SI,DI
(我的辅导书上没有SP,BP;why?)
·存放数据串操作时的计数值:CX
·查看程序已执行到哪条指令的地址:IP
·查看堆栈中当前正要进行入出栈的存储单元的地址:SP
·查年运算结果是否等于零:PSW的ZF
·查年程序中的数据存放段区是从哪个地址开始的:DS,ES
·查看程序中的指令存放的段区是从哪个地址开始的:CS
1.3段地址和偏移地址为1000:117A的存储单元的物理地址是什么?而1109:00EA或1025:0F2A的存储单元的物理地址又是什么:这说明了什么问题?
1000:117A物理地址为:1117A;1109:00EA的物理地址为:1117A;1025:0F2A的物理地址为:1117A.说明物理地址不变,段地址改变,偏移地址也随之变化.
1.存储器地址对应的数据(图略)
75422H(字节):9CH
75424H(字节):5DH
75422H(字):249CH
75424H(字):E65DH

第二章
2.1写出相应的汇编语言指令:
(1)以寄存器BX和SI作为基址变址寻址方式把存储器中的一个字传送到CX寄存器。
MOV CX,[BX][SI(注:寄存器寻址只能使用:BX,BP,SI,DI;且BX、BP或SI,DI不能同时使用,可能我说的不太对,请版主确认一下)
(2)以寄存器BX和偏移量value作寄存器相对寻址方式把存储器的一个字和AX相加,把结果(即和)送回那个字单元中。
ADD value[BX],AX
(3)将一个字节立即数0B6H与符号的地址为NUM的存储器字节单元内容相比较。
CMP BYTE PTR 0B6H,NUM(如果前面不加BYTE RTR,默认的也是字节比较吧?还有双字比较,应该怎么写?)
(4)测试从寄存器BP和DI、偏移量COUNT作为相对基址变址寻址方式寻址的存储器字节单元内容最高位B7的值,字节单元的内容不能改变。
TEST COUNT[BP][DI],80H
(5)将AH寄存中的高4位和低4位数据互换。
MOV CL,4
ROL(或ROR) AH,CL
(6)清除以寄存器SI间接寻址的存储器字单元,同时清除CF标志位.
XOR AX,AX ;使AX=00000000,CF=0
MOV [SI],AX
2.2设DS=1000H,BX=2865H,SI=0120H,偏移量D=47A8H,试计算下列各种寻址方式下的有效地址.
1)使用D的直接寻址 47A8H (这道指令怎么写?如何定义D的值)
2)使用BX的寄存器间接寻址 2865H
3)使用BX和D的寄存器相对寻址 700DH
4)使用BX、SI和F的相对基址变址寻址 712DH
5)使用BX、SI的基址变址寻址 2985
2.3假设DS=1000H,BX=2A80H,CX=3142H,SI=0050H,(10050H)=3BH,(10051H)=86H,(11200H)=7AH,(11101H)=64H,(12ADOH)=0A3H,每小题的括号中分别填入指令执行后的结果:
1)MOV AX,1200H ;AX=1200H
2)MOV AX,[1200H] ;AX=1200H(书上的答案是647A,但是我用DEBUG试了一下是1200,可能是因为我的PII的原因吧,希望有8088的朋友能试一下,版主,考起试来应该怎么写呀?)
3)ADD [SI],CX ;(10050H)=7DH,9100510=B7H,ZF=0,CF=0,SF=1,OF=1
4)OR BYTE PTR [BX][SI],54 ;(12AD0H)=F7,CF=0,OF=0
5)MOV 150H[BX],CH ;[12BD0H]=31,CH=31
2.4指出下列指令的错误原因
1)MOV AX,CL 两操作数的长度不一样.
2)MOV CS,AX 不能给CS赋值
3)INC BETA[BP] 书上说:没有数据类型说明,但我认为它应该自动默认为字节操作,版主再来看看吧
4)MOV ES,1850H 立即数不能直接送段寄存器
5)ADD BX,DS 段寄存器不能做为加法操作数使用
6)AND AX,[CX] 寄存器寻址只能使用BX,SI,DI,BP
2.5说明下列指令执行的操作,说明原始数据和结果数据的存储地点

贴子相关图片:

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

2 汇编语言程序设计课后习题答案
[原始数据](结果数据)
1)mov [2700h],cx 这条指令在我的P4试了一下,是错误的;如果考试时出只好说是:把[CX]中的内容送到(数据段中偏移地址为2700h字单元)中;
2)MOV DH,50[SI] 将[数据段中有效地址为SI+50的字节单元]中的数据送入(DH)中;
3)LEA SI,ARRAY 将ARRAY的偏移地址送入(SI),结果数据在[代码段对相应指令字节中]
4)DAS 将AL中的压缩的十六进制数调整为十进制数,结果数据在AL中,原始数据也在AL中
5)ADC CL,[BX] 将BX和CL的和加上CF的值后,存放在CL中,结果在CL中,原始在BX,CL,CF中
6)ROR WORD PTR ALPHA[SI],CL 将偏移地址为ALPHA+SI字单元中的数据循环移,结果和原始都在哪个字单元中.
2.6指出下列无条件转移指令的转移地址中的偏移地址是什么,存放在何处.
1)JMP BX 偏移地址是BX中的值,存放在BX中
2)JMP WORD PTR [BX] 偏移地址是以BX中的值为偏移地址的一个字单元中的数值,存放在以BX中的值为偏移地址的一个字单元中
3)JMP NEAR PTR PROA 偏移地址为PROA的偏移地址,存放在CS段的相应指令处(书上说的不一样,请版主做下这道题)
4)JMP FAR PTR FAR_PRO 偏移地址为FAR_PRO的偏移地址,,存放在CS段的相应指令处
5)JMP SHORT AGAIN 偏移地址为AGAIN的偏移地址,存放在CS段的相应指令处(书上说的不一样,请版主做下这道题)
6)JMP DWORD PTR [BX][DI] 偏移地址是以BX,DI为基址变址寻址的两个字单元的内容,存放在以BX,DI为基址变址寻址的两个字单元中
2.7写出把道址为BLOCK的字数组的第六个字送到CX寄器的指令序列,要发别使用以下几种寻址方式
1)以BX寄存器的间接寻址
LEA BX,BLOCK+0AH
MOV CX,[BX]
2) 以BX寄存器的相对寻址
LEA BX,BLOCK
MOV CX,0AH[BX]
3) 以BX,SI的基址变址寻址
LEA BX,BLOCK
MOV CX,[BX][SI]
2.8指出下列指令的源和目的操作数的寻址方式
(目地操作数寻址方式;原操作数寻址方式)
1)MOV ARRAY,BX
直接寻址;寄存器寻址
2)ADC CX,ALPHA[BX][SI]
寄存器寻址;相对基址变址寻址,寄存器寻址
3)AND BYTE PTR GAMMA [DI],11011001B
寄存器相对寻址;立即寻址,寄存器相对寻址
4)INC WORD PTR [BX]
寄存器间接寻址;寄存器间接寻址
5)TEST EX:[IS],DX
(目的操作数?在哪?只改变标志位,算寄存器寻址吗?书上写的寄存器间接寻址,不明白);寄存器间接寻址,寄存器寻址
6)SBB SI,[SI]
寄存器寻址;寄存器寻址,寄存器间接寻址
2.9分别说明下列每组指令中的两条指令的区别:
1) MOV AX,TABLE
LEA AX,TABLE
前者是将变量TABLE的内容传递给AX;后者是将TABLE和偏移地址传递给AX
2) AND BL,0FH
OR BL,0FH
前者是BL的内容与0F相与;后者是BL与0FH相或
3) JMP SHORT L1
JMP NEAR PTR L1
前者为短跳转,后者为近跳转
4) MOV AX,[BX]

第三章
3.1
1)使计算机执行某种操作的命令 ;指令
2)表示计算机执行什么操作的符号 ;助记符
3)存放指令机器码的存储器段区 ;代码段
4)指出指令在程序中位置的符号地址 ;标号
5)将汇编语言程序翻译成机器码程序的实用程序 ;汇编程序
3.2试写出完成下列操作的指示性语句:
1)将56H,78,0B3H,100存放在定义为字节变量ARRAY的存储单元中.
ARRAY DB 56H,78,0B3H,100
2)将字数据2965H,45H,2965,0A6H存放在定义为字节变量DATA的存储单元中.
ARRAY DB 65H,29H,45H,95H,0BH,0A6H ;书上在0B和0A6H后面有个0,不什么是什么.
3)将字节数据56H,0C6H,78H,12H存放在字变量ALPHA的存储单元中.并且不改变数据按字节存储的次序
ALPHA DW 0C656H,1278H
4)在BETA为道址的存储单元中连续存放字节数据:2个23,5个'A',10个(1,2),20个空单元。
BETA DB 2 DUP (23),5 DUP ('A'),10 DUP (1,2), 20 DUP (?)
5)在STRING为首址的存储单元中存放字符串'THIS IS A EXAMPE'
STRING DB 'THIS IS A EXAMPE'
3.3下列伪指令序列中,BASUB的值为多少?它表示什么意义?

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

3 汇编语言程序设计课后习题答案
BUFF DB 7,6,'56',?
ARRAY DW 0,67H,7
BASUB EQU ARRAY-BUFF
BASUB的值是5,它表示ARRAY与BUFF的首地址的差.
3.4假设程序中的数据定义如下:
BUF1 DB 100 DUP ('a')
BUF2 DW 1275H,567,0C5H
BUF3 DB 20 DUP (?)
BUF4 DB 7,4,6,9,8
1)用一条指令将BUF1的谝移地址送入BX.
LEA BX,BUF1
2)将BUF2的第三字节数据送入CL
MOV BYTE PTR CL,[BUF2+2]
3)将0A6H送入BUF3的第10个字节单元中
MOV BYTE PTR [BUF3+9],0A6H
4)用伪指令写出BUF1和BUF2二者的总长度(字节数)
L1_2 EQU BUF3-BUF1
5)用一组指令写出BUF2的第二个数据567和BUF4的第三个数据6相加,结果(和)送入BUF3
MOV AL,BUF4+2
MOV AH,0
ADD AX,BUF2+2
MOV BUF3,AX
3.5指出下列第一对伪指令语句的区别:
1)X1 DB 76; X2 EQU 76
前者是向X1的字节单元存入76,后者是将X2的值定义为76.
2)X1 DW 3548H; X2 EQU BYTE PTR X1
前者是定义X1的字单元值为3548,后者是定义X2的值为X1的第一个字节单元的值48.
3)X1 EQU 3; X2 = 3
两者都是赋值语句,但前者只能定义一次,后者可以重复定义.
4)X1 DW 3678H; X2 DB 36H,78H
前者的字节单元内容依次为78,36;后者的字节单元内容依次为36,78.
5)X1 DW 6341H; X2 DW 6341
前者为十六进制的6341;后者为十进制的6341
3.6设置一个数据段DATA_SEC,其中连续存放下列的8个变量,用段定义语句和数据定义语句写出数据段:
1)DATA1为字符串变量:'DATA SEGMENT'
2)DATA2为十进制数字节变量:72,65,-10
3)DATA3为十六进制数字字节变量:109,98,21,40
4)DATA4为10个零的字节变量.
5)DATA5为数字的ASCII字符字节变量:12345
6)DATA6为十进制的字变量:7,9,298,1967
7)DATA7为十六进制的数的字变量:785,13475
8)DATA8为本段中字变量和字节变量之间的字节单元数之差
DATA_SEC SEGMENT
DATA1 DB 'DATA SEGMENT'
DATA2 DB 72,65,-10
DATA3 DB 6DH,62H,15H,28H
DATA4 DB 10 DUP (0)
DATA5 DB '12345'
DATA6 DW 7,9,298,1967
DATA7 DW 0311H,34A3H
D1 EQU DATA6-DATA1
D2 EQU $-DATA6
DATA8 EQU D2-D1
3.7设程序中的数据定义如下:
DATA1 DW ?
DATA2 DB 32 DUP (?)
DATA3 DD ?
DLENGTH EQU $-DATA1
问DLENGTH的值为多少?它表示什么意义?
DLENGTH的值为38,表示DATA1,DATA2,DATA3所占用的字节数之和
3.8指出下列第一小题中的伪指令表达的操作哪些是错误的?错误在哪时?
1)
ALPHA EQU 78H
BETA EQU ALPHA+1
没错.
2)
DATA DB 395
1个字节最多能够表示256
3)
X1 SEG
.
.
.
X1 ENDS
SEG应该写成SEGMENT
4)
ALPHA EQU BETA
BETA没有赋值
5)
COUNT EQU 100
COUNT EQU 78
不可以用EQU给一个变量重复赋值
6)
MAIN PROC
.
.
.
ENDP
过程结束标志,应该有个MAIN
7)ARRAY DW 10 DUP (?)
.
.
.
JMP ARRAY
ARRAY是变量,JMP不能跳到ARRAY处
8)
SEGMENT CODE_SEG
.
.
.
ENDS CODE_SEG
书写格式错误,应写为
CODE_SEG SEGMENT
CODE_SEG ENDS
3.9对于下面的数据定义,写出各条指令执行的结果:
FLDB DW 0A24FH
TABLE DB 32H,52,0C2H,213
TEA EQU WORD PTR TABLE
ARRAY DB 'ABCD'
COUNT EQU $-ARRAY
1)MOV AX,FLDB AL=(4FH)
2)MOV BX,TEA BH=(52H)
第3个回答  2013-03-24
DATA SEGMENT
BLOCK DB 12, 0, -20, 45, -29, 36, 50, 0, 100, -100
;在这里任意存放 10 个带符号数(-128~+127)
AVERAGE DB ?
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START:
MOV AX, DATA
MOV DS, AX
XOR AX, AX
LEA SI, BLOCK
MOV CX, 16
_ADD:
ADD AL, [SI]
ADC AH, 0
INC SI
LOOP _ADD

MOV BL, 16
DIV BL

MOV AVERAGE, AL

MOV AX, 4C00H
INT 21H
CODE ENDS
END START本回答被网友采纳
第4个回答  2013-03-24
交话费的何润东还能有头发

汇编语言程序设计题
1:从键盘输入一序列字符,然后按小写字母.数字字符和其他字符分类计数,最后分别显示出这三类字符的计数结果.(顺序和分支程序设计)2:把AX寄存器中存放的16位二进制数分别转换为八进制和十六进制数,并在屏幕上显示.(循环程序设计)跪求答案~~~ 展开  我来答 3个回答 #热议# 网文质量是不是下降了?我是一块紫水...

汇编语言
17.若外部RAM的(2000H)=X,(2001H)=Y,编程实现Z=3X+2Y,结果存入内部RAM的20H单元(设Z<255)。18.在外部RAM的2040H~2043H个存储单元中,存有01,02,03,04四个数,试编程将它们传送到内部RAM的30H~33H单元。19.试对内部RAM20H单元的内容进行判断,若为正数转向2100H;若为负数转向2200H;若为0转向2300H。20...

一部分,汇编题。。。跪求 这些题的答案~··##!
7、一个程序可以有 堆栈段、数据 段、附加 段、代码段,它们的段基址分别由SS、 DS_、ES 、CS给出 8、8086指令中操作数类型有三种,分别是:立即数操作数 寄存器操作数、存储器操作数 、9、在Debug环境中用A命令写以下这条指令 MOV 1000[BP][SI],DX 则,指令中目的操作数的寻址方式是:相对...

跪求《C语言程序设计》课本习题答案!!!
(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。(7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言...

跪求3篇作文开头和中心句 1.以勇气为话题 2.以宽容为话题 3.以自信为...
如果考生对于话题题意没有准确的把握,一开篇就上了岔道,就会严重影响得分。下面这个例子就比较准确、形象地说明了语言的作用。 例4《沟通从语言开始》:“语言是桥梁,沟通此岸与彼岸;语言是瀑布,沟通溪流与深潭;语言是彩虹,沟通天空与大地。只有语言得到准确的表达,沟通才能成功。如果语言失误,那就可能造成无法预料的...

跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
搜索答案 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间间隔0.5秒。 30 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间间隔0.5秒。 最好加上注释每一步在做什么,急用,好人一生平安!

跪求脑筋急转弯、智力题(要附答案的)
1.问题:有一天狗狗和青蛙比赛游泳,青蛙为什么输了?答案:因为比的是狗刨泳。2.问题:什么动物的屁股杀伤力比嘴厉害?答案:黄蜂(黄蜂又称为“胡蜂”、“蚂蜂”或“马蜂”。腹部尾端内隐藏了一支退化的输卵管,即有毒蜂针。在遇到攻击或不友善干扰时,会群起攻击,可以致人出现过敏反应和毒性反应,...

跪求解决:没有找到PBVM60.dll,因此这个应用程序未能启动。重新安装应用...
二、如果都没有,那就从软件方面排除故障了。 先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“...

...则B1单元格显示为1,否则为2,命令怎么写,跪求高手解答。
选定操作区域,选取“格式”菜单中的“自动套用格式”命令,在格式列表框中选取一款你满意的格式样式,按“确定”按钮即可。要注意的是,格式列表框下面有包括“数字”、“边框线”、“字体”等6个“应用格式种类”选项,若某项前面的“x”不出现,则在套用表格样式时就不会用该项。 25、如何快速地复制单元格的格式?

手机不和任何设备连接时拨*99#有什么反应。。跪求答案
是你按错了吧,是"*#99#"吧,少按了一个 抄人家的 随着时间的推移,现在也有很多人会选择用蓝牙连接了,因为现在买一个2.0的蓝牙适配器也不过是40块钱左右,大部分人也会不在乎。而且蓝牙与数据线,红外相比起来会更方便快捷。随之论坛上也常常看到有朋友在问题蓝牙如何连接,所以希望早日帮助到有...

相似回答