1.与debug直写区别
2.区分三段的写法
3.注释的写法
assume cs:codesg
codesg segment
mov ax,0123h
mov bx,0456h
add ax,bx
add ax,ax
mov ax,4c00h
int 21h
codesg ends
end
输出为0错误和警告,且生成OBJ文件在,则成功
对于小的程序,会提示no srack segment没有栈段
原因:
g命令还可以指定执行,格式:g+cs:ip
自己遮住答案多做几遍
inc 就是+1
loop失效,莫名原因语法错误
;初始方案
assume cs:code
code segment
mov bx,0
mov cx,12
s:mov ax,0ffffh
mov ds,ax
mov dl,[bx]
mov ax,0020h
mov ds,ax
mov [bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
;初始方案
assume cs:code
code segment
mov ax,0ffffh
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,12
s:mov dl,[bx]
mov es:[bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
原因:
使用问题:
改进:
push;入栈。数据到栈底
pop:出栈。数据放栈顶
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;用来做栈段的
start:mov ax,cs
mov ss,ax ;ss作为栈顶
mov sp,30h ;sp作为栈底
;入栈
mov bx,0
mov cx,8
s:push cs:[bx]
add bx,2
loop s
;出栈
mov bx,0
mov cx,8
s0:pop cs:[bx]
add bx,2
loop s0
mov ax,4c00h
int 21h
codesg ends
end
疑问:出栈过程不是很懂