~请教一道微机原理的汇编程序题~有加分~

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:09:51
编程:已知在起始地址为3500H的内存单元中,存放一组数据:10H,15H,0FH.求该组的总和后将其扩大4倍,然后转换成BCD码存入起始地址为3510H的单元中。

.model small
.386
.stack
.data

.code
main proc far
mov ax,@data
mov ds,ax

xor ax,ax
mov bx,3500h
mov cx,3
DoAdd:
add al,[bx]
inc bx
loop DoAdd
mov cl,2
shl al,cl

mov bl,10
xor cx,cx
DoBCD:
div bl
xor dx,dx
mov dl,ah
push dx
inc cx
test al,al
jnz DoBCD

mov bx,3510h
DoSave:
pop ax
mov [bx],al
inc bx
loop DoSave

exit:
mov ax,4c00h
int 21h
main endp

end main

1.
SS、SP
解释:堆栈操作是在堆栈段(SS)的栈顶(SP)进行操作的。
2.
0020H
解释:LEA AX,TABLE的功能是将TABLE的偏移地址(0020H)送给寄存器AX,作为AX的内容
3.
11、8
解释:2K*8位表示有2K个单元,每个单元有一个地址,又因为2K是2的11次方,所以片内选择2K个单元需要有11根地址线;8位表示每个单元的数据线位数是8位,即数据线为8根

是不是片外的?