|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
d segment
db 0,0,0,0,0,0,0,0
d ends
code segment
start: mov ax,a
mov ds,ax ,把a段的数据放入ds寄存器中
mov ax,b
mov es,ax ,把b段的数据放入ES寄存器中
mov ax,d
mov ss,ax ,把d段的数据放入SS寄存器中(这里课本是C段,但用c无法编译所以换d)
mov bx,0 ,把dx置0,因为下面用它做各个段的内存偏移地址使用,必须从0开始
mov ah,0 ,把寄存器ax高位置零,因为下面用来存储a,b段的数值相加,且它们是字节型数据
mov cx,8 ,因为有8个字节型的内存数据,待会循环从0到7分别加1使用
s: mov al,ds:[bx] ,把a段的第一个字节型数据值存入寄存器al中
add al,es:[bx] ,把a段和b段的第一个字节型数据值相加之后存入到al中
mov ss:[bx],al ,最后把a段和b段的第一个字节型数据值的和存入课本要求的d段中
inc bx ,每次执行后BX作为内存单元都自动加1
loop s ,依次循环
mov ax,4c00h
int 21h
code ends
end start
初学编程 各位前辈帮忙看看思路和答案做得对否 感谢了
最后我在电脑中debug得到SS寄存器中的值依次为02,04,06 ,08 ,0a,0c,0E,10 |
|