注册 登录
编程论坛 汇编论坛

初学汇编 请大神们指教

shuimu10 发布于 2011-03-29 20:51, 786 次点击
rt,初学汇编。用的是王爽老师编写的书
也才刚看到第六章
就目前遇到的一些程序做了个小结如下
assume cs:code,ds:data,ss:stack
data segment
    .
    .
data ends
stack segment
    .
    .
stack ends
code segment
start:
       .
       .
       mov ax,4c00h
       int 21h
code ends
end start
不知道大神们有什么补充的 好让我学习的基础更扎实
请不吝指教 多谢!!
8 回复
#2
ansic2011-03-29 20:53
good job~~
#3
zaixuexi2011-03-30 09:34
挺好的,整理成笔记,可以多看看论坛的置顶帖子,那里面好多前辈整理的知识,慢慢消化吧.
#4
shuimu102011-04-01 12:21
关于栈的疑惑
如下代码:不是说出栈后,数还在栈中
那理论上最后的ax是不是有ax=1111h?
可实验结果却不是,为什么
assume cs:code,ss:stack

stack segment stack
    dw 0,0,0,0,0,0,0,0
stack ends
               
code segment
start:
    mov ax,1111h
    push ax
    pop ax
    sub sp,2
    pop ax
      
    mov ax,4c00h
    int 21h
code ends
end start
#5
ansic2011-04-01 12:46
以下是引用shuimu10在2011-4-1 12:21:14的发言:

关于栈的疑惑
如下代码:不是说出栈后,数还在栈中
那理论上最后的ax是不是有ax=1111h?
可实验结果却不是,为什么
assume cs:code,ss:stack

stack segment stack
    dw 0,0,0,0,0,0,0,0
stack ends
               
code segment
start:
    mov ax,1111h
    push ax
    pop ax
    sub sp,2
    pop ax
      
    mov ax,4c00h
    int 21h
code ends
end start

pop指令并不会改变栈里的数据, 只是把sp指向的数据复制到目的寄存器中。
#6
橙色水晶2011-04-01 12:54
都是  好学的  呜呜  我也要看   呵呵 ~~~
#7
shuimu102011-04-01 13:39
回复 5楼 ansic
那最后ax的值应该是1111h才对  可我的运行结果是3302h  实在是不理解
#8
zaixuexi2011-04-01 14:21
1. mov ax,stack
   mov ss,ax
   mov sp,16         ;没见着这3句
2.-t会保存一些数据,把你的数据冲掉了,这个等学到中断就懂了
3.跑一跑这个程序
程序代码:
    .model
    .code
    main proc far
start:
    xor ax,ax
    push ds
    push ax
    mov ax,1111h
    push ax
    pop ax
    xchg ax,bx
    add sp,-2
    pop ax
    xor ax,bx
    jnz exit
    push cs
    pop ds
    lea dx,mess
    mov ah,9
    int 21h
exit:
    ret
    main endp
    mess db "hello world!$"
    end start
4.你的代码可以这么改下,DEBUG时候-g执行看ax的值
程序代码:
assume cs:code,ss:stack

stack segment stack
    dw 0,0,0,0,0,0,0,0
stack ends
              
code segment
start:
    mov ax,stack
    mov ss,ax
    mov sp,16
    mov ax,1111h
    push ax
    pop ax
    sub sp,2
    pop ax
    int 3
    mov ax,4c00h
    int 21h
code ends
end start

#9
Alar302011-04-03 16:12
呵呵
都是从初学者过来的哈
继续努力
1