汇编语言 demo1,2,3

 1 assume cs:codesg
 2
 3 data segment
 4 ;yellow
 5         db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1
 6 data ends
 7
 8 stack segment
 9         dw 16 dup (0)
10 stack ends
11
12 codesg segment
13 start:
14         mov ax,data
15         mov ds,ax
16
17         mov ax,0b800h
18         mov es,ax
19
20         mov ax,stack
21         mov ss,ax
22         mov sp,20h
23         mov di,0
24         mov cx,16
25    main:
26         push cx
27         mov al,2ah
28         mov ah,ds:[di]
29         inc di
30         push di
31
32         mov dx,1
33         mov di,7d0h
34         mov si,7d0h
35         mov cx,0bh
36
37    lmain:
38         push cx
39         push si
40         push di
41         mov bx,dx
42         mov cx,dx
43
44    ms:
45         push cx
46         mov bp,0
47         mov cx,bx
48
49    mA:
50         mov es:[bp+di],ax
51         mov es:[bp+si],ax
52         add bp,4
53         loop mA
54
55         add di,09eh
56         sub si,0a2h
57         inc bx
58         pop cx
59         loop ms
60
61         inc dx
62         pop di
63         pop si
64         sub di,0a2h
65         add si,09eh
66         call delay
67         pop cx
68         loop lmain
69
70         pop di
71         pop cx
72         loop main
73 ;       jmp main
74
75         mov ax,4c00h
76         int 21h
77
78
79 delay:
80         mov cx,08h
81    d1:
82         push cx
83         mov cx,0ffffh
84    d2:
85         loop d2
86         pop cx
87         loop d1
88         ret
89
90 codesg ends
91 end start

assume cs:codesg
data segment
;zi
        db ‘Welcome to the world assembly ! ‘
;ziti_color
        db 1,2,3,4,5,6,7,8
;yanhua
        db 4,52,23,8,66,38,56,64
        db 19,15,20,21,18,21,15,17
        db 8,7,6,5,4,3,2,1
data ends

stack segment
        dw 32 dup (0)
stack ends

codesg segment
start:
        mov ax,data
        mov ds,ax

        mov ax,0b800h
        mov es,ax

        mov ax,stack
        mov ss,ax
        mov sp,40h

   again:
        call clear_screen
        mov bp,0
        mov cx,8
   main:
        call ziti
        call yanhua
        call delay

        inc bp
        loop main

      ;  jmp again

        mov ax,4c00h
        int 21h

yanhua:
        push cx
        push si
        push di
        mov si,0
        mov di,0f00h
        mov al,ds:[bp+40]
        mov ah,0
        add ax,ax
        add di,ax
        mov al,2ah
        mov ah,ds:[bp+56]
        mov cl,ds:[bp+48]
        mov ch,0

   yh_s:
        mov es:[di],ax
        call ziti
        call delay
        mov word ptr es:[di],0
        sub di,0a0h
        loop yh_s

        call zhanfang

        pop di
        pop si
        pop cx
        ret

zhanfang:
        push ax
        push di
        mov es:[di],ax
        call ziti
        call delay
        mov es:[di-2],ax
        mov es:[di+2],ax
        mov es:[di-9eh],ax
        mov es:[di+9eh],ax
        mov es:[di-0a2h],ax
        mov es:[di+0a2h],ax
        call ziti
        call delay
        mov es:[di-4],ax
        mov es:[di+4],ax
        mov es:[di-13ch],ax
        mov es:[di+13ch],ax
        mov es:[di-144h],ax
        mov es:[di+144h],ax
        call ziti
        call delay
        mov es:[di-6],ax
        mov es:[di+6],ax
        mov es:[di-1dah],ax
        mov es:[di+1dah],ax
        mov es:[di-1e6h],ax
        mov es:[di+1e6h],ax

        call ziti
        call delay
        push cx
        sub di,1e6h
        mov cx,7
   zs1:
        push cx
        push di
        mov cx,7
   zs2:
        mov word ptr es:[di],0
        add di,2
        loop zs2

        pop di
        add di,0a0h
        pop cx
        loop zs1
        call ziti
        pop cx

        pop di
        pop ax
        ret

ziti:
        push ax
        push cx
        push si
        push di
        mov ah,ds:[bp+32]
        mov si,0
        mov di,710h
        mov cx,32
   s:
        mov al,ds:[si]
        mov es:[di],ax
        add di,2
        inc si
        loop s

        pop di
        pop si
        pop cx
        pop ax
        ret

delay:
        push cx
        mov cx,6h
   s1:
        push cx
        mov cx,0ffffh
   s2:
        loop s2
        pop cx
        loop s1
        pop cx
        ret

clear_screen:
        push cx
        push di
        mov di,0
        mov cx,7d0h
   clear:
        mov word ptr es:[di],0
        add di,2
        loop clear

        pop di
        pop cx
        ret

codesg ends
end start

assume cs:codesg
data segment
        db ‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘
        db 11,19,27,35,43,51,59,67
        db 5,9,13,17,21,25,29,33
        db 1,2,3,4,5,6,7,8
        db 8,7,6,5,4,3,2,1
data ends

stack segment
        dw 16 dup (0)
stack ends

codesg segment
start:
        mov ax,0b800h
        mov es,ax

        mov ax,data
        mov ds,ax

        mov ax,stack
        mov ss,ax
        mov sp,20h

   agian:
        call clear_screen
        mov bp,0

        mov cx,8
   main:
        push cx
        call hou
        call qian
        inc bp
        pop cx
        loop main

;       jmp agian

        mov ax,4c00h
        int 21h

hou:
        push ax
        push bx
        push cx
        push di
        push si
        mov di,50h
        mov si,0f50h
        mov al,ds:[bp+16]
        mov ah,0
        add ax,ax
        sub di,ax
        add si,ax

        mov bx,25

        mov cx,12
   s02:
        push cx
        push di
        push si

        mov cx,bx
   s12:
        mov al,‘/‘
        mov ah,ds:[bp+32]
        mov es:[si],ax
        mov al,‘\‘
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,0a0h
        sub si,0a0h
        loop s12

        sub bx,2
        pop si
        pop di
        push si
        push di

        mov cl,ds:[bp+8]
        mov ch,0
   s22:
        mov al,ds:[bp]
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,2
        loop s22

        mov cl,ds:[bp+8]
        mov ch,0
   s32:
        mov al,ds:[bp]
        mov ah,ds:[bp+32]
        mov es:[si],ax
        sub si,2
        loop s32

        pop di
        pop si
        add di,0a0h
        sub si,0a0h
        call delay
        call clear_screen
        pop cx
        loop s02

        pop si
        pop di
        pop cx
        pop bx
        pop ax
        ret

qian:
        push ax
        push bx
        push cx
        push di
        push si
        mov di,07d0h
        mov si,07d0h
        mov al,ds:[bp+16]
        mov ah,0
        add ax,ax
        sub di,ax
        add si,ax

        mov bx,1

        mov cx,13
   s01:
        push cx
        push di
        push si

        mov cx,bx
   s11:
        mov al,‘/‘
        mov ah,ds:[bp+32]
        mov es:[si],ax
        mov al,‘\‘
        mov ah,ds:[bp+24]
        mov es:[di],ax
        sub di,0a0h
        add si,0a0h
        loop s11

        add bx,2
        pop si
        pop di
        push si
        push di

        mov cl,ds:[bp+8]
        mov ch,0
   s21:
        mov al,ds:[bp]
        mov ah,ds:[bp+24]
        mov es:[di],ax
        add di,2
        loop s21

        mov cl,ds:[bp+8]
        mov ch,0
   s31:
        mov al,ds:[bp]
        mov ah,ds:[bp+32]
        mov es:[si],ax
        sub si,2
        loop s31

        pop di
        pop si
        add di,0a0h
        sub si,0a0h
        call delay
        call clear_screen
        pop cx
        loop s01

        pop si
        pop di
        pop cx
        pop bx
        pop ax
        ret

delay:
        push cx
        mov cx,6h
   ds0:
        push cx
        mov cx,0ffffh
   ds1:
        loop ds1
        pop cx
        loop ds0
        pop cx
        ret

clear_screen:
        push cx
        push di
        mov di,0
        mov cx,2000
   sc0:
        mov word ptr es:[di],0
        add di,2
        loop sc0
        pop di
        pop cx
        ret

codesg ends
end start
时间: 2024-10-10 14:14:44

汇编语言 demo1,2,3的相关文章

《80X86汇编语言程序设计教程》二十三 分页管理机制实例

1.  理论知识参考"<80X86汇编语言程序设计教程>二十二 分页管理机制与虚拟8086模式".演示分页机制实例:初始化页目录表和部分页表:启用分页管理机制:关闭分页管理机制等.逻辑功能:在屏幕上显示一条表示已启用分页管理机制的提示信息.大体步骤是:在实模式下拷贝显示串程序的代码到预定义区域,转保护模式,初始化页目录和2个页表,开启分页机制,转入预定义区执行显示代码,然后关闭分页机制,重新回到实模式,程序终止. 2.  源代码 "386scd.asm"

最强大的王爽汇编语言学习环境使用教程

最强大的王爽汇编语言学习环境使用教程 一.前言 这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示.还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大.并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器 vim73 for DOS,这是一个支持彩色

汇编语言入门:流程控制

流程控制:顺序,分支,循环 程序计数器PC中存储当前执行的程序在EM中的位置 汇编里面,用比较.跳转实现流程控制. 1.顺序:PC+1(不一定加一,看指令长度) 2.分支循环,直接赋给PC值,执行指定地址的程序 有时候需要程序有一定的流程控制能力,它不是老老实实按照顺序来执行的,中间可能会跳过一些代码 修改PC值,不可用MOV指令,PC是特殊的寄存器,特殊对待,跳转指令修改其值. 跳转指令: 1 ja 大于时跳转 2 jae 大于等于 3 jb 小于 4 jbe 小于等于 5 je 相等 6 j

ios-表视图-demo1

// // RootViewController.m // uitableview // // Created by liyang on 14-4-27. // Copyright (c) 2014年 liyang. All rights reserved. // #import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (id)in

王爽《汇编语言》第三版 第十五章 外中断

引言 CPU 除了有运算能力外,还要有 I/O( Input/Output ,输入/输出)能力. 15.1 接口芯片和端口 在PC系统的接口卡和主板上,装有各种接口芯片.这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问. 外设的输入不直接送入内存和CPU ,而是送入相关的接口芯片的端口中. CPU向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设. 15.2 外中断信息 当CPU 检测到可屏蔽中断信息时: 1.如果IF=1,则CPU 在执行完当前指令后响

王爽《汇编语言》第三版 第五章 [BX]和loop指令

5.1 [bx] mov ax,[bx]功能:bx 中存放的数据作为一个偏移地址EA ,段地址SA 默认在ds 中,将SA:EA处的数据送入ax中. 5.2 Loop指令 指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作: 1.(cx)=(cx)-1: 2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行. 通常我们用loop指令来实现循环功能,cx 中存放循环次数. 5.3 在Debug中跟踪用loop指令实现的循环程序 5.4 Debug和汇编编译器

用汇编语言给XP记事本添加“自动保存”功能 good

[文章标题]: 用汇编语言给XP记事本添加“自动保存”功能 [文章作者]: newjueqi [作者邮箱]:[email protected] [作者QQ]:190678908 [使用工具]: OD, LordPE,eXeScope[操作平台]: XP-SP2[作者声明]: 本人平时一般的文字处理都是用记事本(用Word好像大材小用了),电脑自从拿去大修后有时候会莫名其妙的重启,弄得经常重写(本人常常忘记保存^-^),于是想给记事本增加类似于Word的自动保存功能,以图个方便.失误之处敬请诸位大

汇编语言 王爽著

汇编语言让我们深入了解计算机底层,值得去学习了解. 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.

汇编语言 王爽著第三章

汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.