几个汇编小代码

Deloz,2010年01月4日02时25分01秒,经典代码,评论(17),阅读(1,042),Via 本站原创

又一年过去了,我怀念2009,但是怀念什么呢?我不知道..

今夜深难眠,发几个多年珍藏的汇编代码送给蛛蛛MM当作新年礼物...蛛蛛MM快来喔.  :eek:

由于历史悠久,不保证正确率...但是我知道蛛蛛MM不会介意的...

(不提供技术支持)

;---------------------------- 
STACK SEGMENT STACK 
DB 200 DUP(0) 
STACK ENDS 
;---------------------------- 
DATA SEGMENT 
BUF DB "ABCDEF$" 
COUNT EQU $-BUF 
DATA ENDS 
;------------------------------ 
CODE SEGMENT 
 ASSUME CS:CODE,DS:DATA,SS:STACK 
BEGIN: MOV AX,DATA 
 MOV DS,AX 
 MOV CX,COUNT 
 LEA BX,BUF
 ADD BX,COUNT
 DEC BX
 MOV AH,2
L1:
 MOV DL,[BX]
 DEC BX
 
 INT 21H 
 LOOP L1 
 
 MOV AH,4CH INT 21H 
;----------------------------- 
CODE ENDS 
END BEGIN

================以上为反向输入字符串

 
 
data segment
buf  db  13,10 'input error ! $'
msg1 db  'one:$'
msg2 db  'two:$'
msg3 db  'result:$'
data ends
sseg segment stack
     dw  64dup(0)
sseg ends
code segment
     assume  cs:code,ds:data,es:data
start: mov ax,data
       mov ds,ax
       lea dx,msg1;改
        mov ah,9
        int 21h 
        clc
       call read;假设这里已经读取了一个整数,在ax中
        jc  err
       mov bx,ax;保存到bx
       lea dx, msg2
       mov ah,9
        int 21h
        clc
       call read;假设这里已经读取了另一个整数,在ax中
       jc  err
         mov cx,ax;马上要乘法,所以先保存ax
         mov dx,0;清dx
         mul bx;用ax*bx,放在(dx,ax)中
         push dx;保存(dx,ax),以后要用。目前两个原始数据还在cx,bx中。
         push ax;
         mov ax,cx;
     jmp loop1;
   
err: lea dx, buf
     mov ah, 9
     int  21h
      jmp exit
loop1:
        cmp bx,0;判断是否为0
        jz l1;如果为0则退出循环
        mov  dx,0;ax的扩展数据保存在(dx,ax)中
        div bx;       
        mov ax,bx;处理下一次循环用的被除数
        mov bx,dx;处理下一次循环用的除数
        mov dx,0;被除数ax的扩展
        jmp loop1       
l1:  mov bx,ax;退出循环时ax中保存的就是最大公约数,还要求最小公倍数,所以先保存到bx
    pop ax;回复以前保存的乘积(dx,bx)
    pop dx;
    div bx;用(dx,ax)除以bx,所得到的值就是最小公倍数,保存在ax中
    ;到此为止,最大公约数在bx中,最小公倍数在ax中
    ;以下是显示和写代码
mov bx,ax
mov  ah,9
int 21h
mov ax,bx
clc
call write
jmp exit
write proc    
     MOV AH, 09H
     INT 21H
ret

=============以上为最大公约数,最小公倍数
 

data segment
x dw 2
y dw 1
z dw 3
v dw 6
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,x
imul y
mov cx,ax
mov bx,dx
mov ax,z
cwd
add cx,ax
adc bx,dx
sub cx,5
sbb bx,0
mov ax,v
cwd
sub ax,cx
sub dx,bx
idiv  x
mov ax,4c00h
int 21h
code ends
end start

================以上为加减乘除

相关文章

  • 暂无相关日志

转载原创文章请注明,转载自: Deloz.Net [Deloz.Net]
本文地址:http://deloz.net/1000000472.html

17条评论 发表评论

  1. 1楼zhengsky 评论于2010年1月4日02时27分29秒 回复   

    :!:
    我一个也看不懂。。。。

    • 2楼Deloz 评论于2010年1月4日02时28分00秒 回复   

      :!: 我也看不懂 :???:

  2. 3楼zhengsky 评论于2010年1月4日02时29分04秒 回复   

    :grin:

    Zhengsky.Cn :oops: 蒸汽传媒·版权所有

  3. 4楼zhengsky 评论于2010年1月4日02时31分05秒 回复   

    蒸汽传媒

    晕。。。。居然被和谐了。。。

    [改帖最后由Zhengsky.Cn于2010年1月4日编辑]

  4. 5楼zhengsky 评论于2010年1月4日02时35分02秒 回复   

    灰色吗?
    粗吗?
    试试这个、、

    蒸汽天空·BLOG

  5. 6楼zhengsky 评论于2010年1月4日02时44分10秒 回复   

    蒸汽天空·版权所有

    • 7楼zhengsky 评论于2010年1月4日02时47分16秒 回复   

      蒸汽天空·版权所有

  6. 8楼一件代发 评论于2010年1月4日12时09分01秒 回复   

    恩,不错。

  7. 9楼北街 评论于2010年1月4日12时53分37秒 回复   

    :evil: 在大学的时候就觉得这个东东很难……呵呵

  8. 10楼花花兔子 评论于2010年1月4日17时31分09秒 回复   

    :???:

  9. 11楼赢在网络 评论于2010年1月4日22时44分01秒 回复   

    汇编差不多都忘了。

  10. 12楼hisnake 评论于2010年1月5日22时21分23秒 回复   

    :cry: :cry: :cry: :cry: 就这玩意,我们单片机就考这个。。。。我看了就眼花啊。。。

    • 16楼Deloz 评论于2010年1月15日13时41分01秒 回复   

      :razz:

  11. 13楼cherlin 评论于2010年1月9日10时05分39秒 回复   

    :?: 蛛蛛MM是哪位?

    • 15楼Deloz 评论于2010年1月15日13时38分23秒 回复   

      搜索引擎蜘蛛呀.

  12. 14楼Brhum 评论于2010年1月12日21时16分52秒 回复   

    :evil: 这是,什么JB :cry:

    • 17楼Deloz 评论于2010年1月15日13时41分29秒 回复   

      :grin:

评论一下


(支持Ctrl + Enter)