习题错题

start:  mov ax,c
        mov ss,ax
        mov sp,16 ;定义栈区
        mov ax,a
        mov ds,ax  ;定义a段段地址
        mov bx,b
        mov es,bx  ;定义b段段地址
        mov ax,0  ;初始化
        mov cx,8  ;循环次数

s:     
        add es:[ax],ds[ax]
        inc ax
        loop s

段寄存器无法直接赋值 必须要通过寄存器中转

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
        mov ss,ax
        
        mov ax,a
        mov ds,ax  ;定义a段段地址

        mov ax,b
        mov es,ax  ;定义b段段地址

        mov bx,0  ;初始化
        mov cx,8  ;循环次数

s:      mov al,es:[bx]
        add ds:[bx],al
        mov al,ds:[bx]
        mov ss:[bx],al
        inc bx
        loop s
        mov ax,4c00h
        int 21h
code ends
end start

db是字节数据 占8位
dw是字型数据 占16位

另外 和没有超过255可以这么做

你可能感兴趣的:(习题错题)