|
主题 : : 第6章 试验5.5实现代码 [待解决] |
回复[ 1次 ]
点击[ 533次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2013-05-05 10:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-02 12:37 |
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
c segment
db 0, 0, 0, 0, 0, 0, 0, 0
c ends
;----------------------------------------------------------
; 比较朴素的实现方法 没有利用编译器的对齐特性
;----------------------------------------------------------
code segment
start:
mov ax, c ; c段的段地址存储在es里
mov es, ax
xor bx, bx ; 设定好遍历基址和次数
mov cx, 8
again:
mov ax, a ; 取出a段中的字节
mov ds, ax
mov dl, ds:[bx]
mov ax, b ; 取出b段中的字节并相加
mov ds, ax
add dl, ds:[bx]
mov es:[bx], dl ; 相加结果存储到c段里
inc bx ; 继续遍历
loop again
mov ax, 4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2018-06-11 16:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-07-05 11:21 |
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
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,a
mov ds,ax
mov dx,0
mov bx,0
mov cx,8
s:
; 从偏移0开始,依次往后加1
mov dl,ds:[0+bx]
add dl,ds:[16+bx]
mov ds:[32+bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|