*数据传送指令
说到数据传送指令,恐怕就会让人一下子想到大名鼎鼎的mov指令了,不过它的“禁忌”也是最多的哦。
1)不能在两个内存单元之间直接进行数据传送。
2)两个段寄存器之间不允许数据的直接传送,立即数不能直接送到段寄存器,在这些情况下都要用通用 寄存器来过渡
3)立即数、代码段寄存器CS和指令指针寄存器IP不能作为目的操作数。(注:若汇编指令有两个操作数 时,前面那个是目的操作数,后面那个是源操作数,这一点要记住)
4)用BX、SI、DI间接寻址时,默认的段寄存器是DS,用BP间接寻址时,默认的段寄存器是SS。但是,必 要时可以使用段超越的方式进行寻址,如ds:[b...
[2008-04-19 22:26] 新手应该知道的指令“禁忌”(待续)
阅读全文 |
作者:duckgaga |
评论次数(11) |
浏览次数(2164)
[2010-01-14 16:46] 扫雷
我写得扫雷程序,用了子程序嵌套,呵呵,很爽!说明一下玩法,SXY,YXY,QXY,END分别代表踩雷,挖雷,取消挖雷和结束游戏,XY表示横纵坐标
STACK SEGMENT STACK
DB 10H DUP (0)
STACK ENDS
DATA SEGMENT
MESSAGE DB "YOU ARE BOMED !! $"
MESSAGE1 DB "GAME OVER !! $"
MESSAGE3 DB "THE REMAIN BOME IS : $"
MESSAGE4 DB "WOULD YOU LIKE TO START AGAIN? (Y\N) $"
XX0 ...
STACK SEGMENT STACK
DB 10H DUP (0)
STACK ENDS
DATA SEGMENT
MESSAGE DB "YOU ARE BOMED !! $"
MESSAGE1 DB "GAME OVER !! $"
MESSAGE3 DB "THE REMAIN BOME IS : $"
MESSAGE4 DB "WOULD YOU LIKE TO START AGAIN? (Y\N) $"
XX0 ...
阅读全文 |
作者:aweravatar |
评论次数(21) |
浏览次数(3863)
[2010-02-11 00:52] 课程设计1
放了这么久,真不应该。
一晚上,五个小时的时间,终于……
做这个课程设计,完全应用了自顶向下的编程方法。
这样思路很清晰。
这中间,发现了很多问题。
最主要的一个就是编写子程序时,对寄存器的保护做得不够,
以致于子程序不能很放心的直接拿来用。
很多时间,都是在跟踪哪个寄存器在哪个子程序中发生了改变。
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db...
一晚上,五个小时的时间,终于……
做这个课程设计,完全应用了自顶向下的编程方法。
这样思路很清晰。
这中间,发现了很多问题。
最主要的一个就是编写子程序时,对寄存器的保护做得不够,
以致于子程序不能很放心的直接拿来用。
很多时间,都是在跟踪哪个寄存器在哪个子程序中发生了改变。
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db...
[2010-07-12 10:42] 模仿黑客帝国屏保
新学了一个产生随机数的指令, 拿来做个练习~~
------------------------------------------------------
1 ;rand.asm
2 assume cs:code
3 code segment
4 start:
5 call clr
6 mov cx,100
7 main: call show
8 in al,60h ;如果有按键Q读入
9 cmp al,10h ;则退出程序
10 ...
------------------------------------------------------
1 ;rand.asm
2 assume cs:code
3 code segment
4 start:
5 call clr
6 mov cx,100
7 main: call show
8 in al,60h ;如果有按键Q读入
9 cmp al,10h ;则退出程序
10 ...
阅读全文 |
作者:masmaster |
评论次数(50) |
浏览次数(47014)
[2010-07-07 17:40] 【原创】十进制转换成十六进制和二进制
;------------------------------------------------------------------------------
assume cs:code
data segment
tab dd 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000
buf dw 4 dup (0)
tmp dw 8 dup (0)
error db 'Invialid number!','$'
error1 db 'stirngs too big!','$'
hexmsg db 'He...
assume cs:code
data segment
tab dd 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000
buf dw 4 dup (0)
tmp dw 8 dup (0)
error db 'Invialid number!','$'
error1 db 'stirngs too big!','$'
hexmsg db 'He...
阅读全文 |
作者:masmaster |
评论次数(15) |
浏览次数(42225)
页码数(1):
1