- 第一个汇编程序
ASSUME CS:code
code SEGMENT
mov ax, 2000H
mov ss, ax
mov sp,0
add sp,10H
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4C00H ; 程序返回
int 21h ; 调用4C00h号功能, 结束程序
code ENDS
END
# 调试模式
-d 2000:10 1F
2000:0010 11 22 33 44 55 00 00 00-00 00 00 00 00 00 00 00 .3DU...........
-r
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0000 NV UP EI PL NZ NA PO NC
0E24:0000 B80020 mov AX,2000
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0003 NV UP EI PL NZ NA PO NC
0E24:0003 8ED0 mov SS,AX
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=0008 NV UP EI PL NZ NA PO NC
0E24:0008 83C410 add SP,+10
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000B NV UP EI PL NZ NA PO NC
0E24:000B 58 pop AX
-t
AX=2211 BX=0000 CX=0016 DX=0000 SP=0012 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000C NV UP EI PL NZ NA PO NC
0E24:000C 5B pop BX
-d 2000:10 1F
2000:0010 21 08 33 44 55 00 00 00-00 00 00 00 00 00 00 00 !.3DU...........
-r
AX=2211 BX=0000 CX=0016 DX=0000 SP=0012 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000C NV UP EI PL NZ NA PO NC
0E24:000C 5B pop BX
-t
AX=2211 BX=4433 CX=0016 DX=0000 SP=0014 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000D NV UP EI PL NZ NA PO NC
0E24:000D 50 push AX
-d 2000:10 1F
2000:0010 24 0E 21 08 55 00 00 00-00 00 00 00 00 00 00 00 $.!.U...........
-r
AX=2211 BX=4433 CX=0016 DX=0000 SP=0014 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000D NV UP EI PL NZ NA PO NC
0E24:000D 50 push AX
-t
AX=2211 BX=4433 CX=0016 DX=0000 SP=0012 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000E NV UP EI PL NZ NA PO NC
0E24:000E 53 push BX
-t
AX=2211 BX=4433 CX=0016 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000F NV UP EI PL NZ NA PO NC
0E24:000F 58 pop AX
-d 2000:10 1F
2000:0010 33 44 11 22 55 00 00 00-00 00 00 00 00 00 00 00 3D.U...........
-r
AX=2211 BX=4433 CX=0016 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=000F NV UP EI PL NZ NA PO NC
0E24:000F 58 pop AX
-t
AX=4433 BX=4433 CX=0016 DX=0000 SP=0012 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=0010 NV UP EI PL NZ NA PO NC
0E24:0010 5B pop BX
-t
AX=4433 BX=2211 CX=0016 DX=0000 SP=0014 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=2000 CS=0E24 IP=0011 NV UP EI PL NZ NA PO NC
0E24:0011 B8004C mov AX,4C00
-d 2000:10 1F
2000:0010 24 0E 21 08 55 00 00 00-00 00 00 00 00 00 00 00 $.!.U...........
- BX 显式
ASSUME CS:code
code SEGMENT
mov bx, 0
mov ax, ds:[bx] ; 显式
mov bx, 2
mov ax, ds:[bx]
mov bx, 10 ; 十进制的10
mov ax, ds:[bx]
mov ax,4C00H
int 21h
code ENDS
END
# 调试模式
-d ds:0 1F
0E14:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 21 08 8A 03 . ........O.!...
0E14:0010 21 08 17 03 21 08 10 08-01 04 01 02 03 FF FF FF !...!...........
-r
AX=0000 BX=0000 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0000 NV UP EI PL NZ NA PO NC
0E24:0000 BB0000 mov BX,0000
-t
AX=0000 BX=0000 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0003 NV UP EI PL NZ NA PO NC
0E24:0003 8B07 mov AX,[BX] DS:0000=20CD
-t
AX=20CD BX=0000 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0005 NV UP EI PL NZ NA PO NC
0E24:0005 BB0200 mov BX,0002
-t
AX=20CD BX=0002 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0008 NV UP EI PL NZ NA PO NC
0E24:0008 8B07 mov AX,[BX] DS:0002=9FFF
-t
AX=9FFF BX=0002 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000A NV UP EI PL NZ NA PO NC
0E24:000A BB0A00 mov BX,000A
-t
AX=9FFF BX=000A CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000D NV UP EI PL NZ NA PO NC
0E24:000D 8B07 mov AX,[BX] DS:000A=034F
-t
AX=034F BX=000A CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000F NV UP EI PL NZ NA PO NC
0E24:000F B8004C mov AX,4C00
-d ds:0 1F
0E14:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 21 08 8A 03 . ........O.!...
0E14:0010 21 08 17 03 21 08 10 08-01 04 01 02 03 FF FF FF !...!...........
- CX 循环次数寄存器 与 loop
用加法计算 10 x 5 的值放到 AX 中
程序会判断 CX 是否为 0, 否则一直循环
ASSUME CS:code
code SEGMENT
mov ax,0
mov cx,5
addNumer:add ax, 10 ; 标号, 其实就是一个地址
loop addNumer ; loop 循环一次, CX = CX - 1, 注意不要随便改动CX的值
mov ax,4C00H
int 21h
code ENDS
END
# 调试模式
-u
0E24:0000 B80000 mov AX,0000
0E24:0003 B90500 mov CX,0005
0E24:0006 83C00A add AX,+0A
0E24:0009 E2FB loop 0006
0E24:000B B8004C mov AX,4C00
0E24:000E CD21 int 21
0E24:0010 19FF SBB DI,DI
0E24:0012 36 SS:
0E24:0013 7813 JS 0028
0E24:0015 FF368813 push [1388]
0E24:0019 FF368613 push [1386]
0E24:001D CF IRET
0E24:001E FA CLI
0E24:001F 1F pop DS
-r
AX=0000 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0000 NV UP EI PL NZ NA PO NC
0E24:0000 B80000 mov AX,0000
-t
AX=0000 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0003 NV UP EI PL NZ NA PO NC
0E24:0003 B90500 mov CX,0005
-t
AX=0000 BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0006 NV UP EI PL NZ NA PO NC
0E24:0006 83C00A add AX,+0A
-t
AX=000A BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0009 NV UP EI PL NZ NA PE NC
0E24:0009 E2FB loop 0006
-p
AX=0032 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=000B NV UP EI PL NZ AC PO NC
0E24:000B B8004C mov AX,4C00
- 求 FFFF:0 ~ FFFF:F 字节型数据的和, 放到 dx 中
ASSUME CS:code
code SEGMENT
mov ax, 0FFFFH
mov ds, ax
mov ax,0 ; al 存放字节型数据
mov bx,0 ; 叠加
mov dx,0 ; 存放结果
mov cx, 16 ; 循环次数
addNumer:mov al, ds:[bx]
add dx,ax
inc bx
loop addNumer
mov ax,4C00H
int 21h
code ENDS
END
# 调试模式
-d FFFF:0 F
FFFF:0000 EA 5B E0 00 F0 30 31 2F-30 31 2F 39 32 00 FC 55 .[...01/01/92..U
-r
AX=0000 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0000 NV UP EI PL NZ NA PO NC
0E24:0000 B8FFFF mov AX,FFFF
-t
AX=FFFF BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0003 NV UP EI PL NZ NA PO NC
0E24:0003 8ED8 mov DS,AX
-t
AX=FFFF BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0005 NV UP EI PL NZ NA PO NC
0E24:0005 B80000 mov AX,0000
-t
AX=0000 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0008 NV UP EI PL NZ NA PO NC
0E24:0008 BB0000 mov BX,0000
-t
AX=0000 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=000B NV UP EI PL NZ NA PO NC
0E24:000B BA0000 mov DX,0000
-t
AX=0000 BX=0000 CX=001D DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=000E NV UP EI PL NZ NA PO NC
0E24:000E B91000 mov CX,0010
-t
AX=0000 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0011 NV UP EI PL NZ NA PO NC
0E24:0011 8A07 mov AL,[BX] DS:0000=EA
-t
AX=00EA BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0013 NV UP EI PL NZ NA PO NC
0E24:0013 03D0 add DX,AX
-t
AX=00EA BX=0000 CX=0010 DX=00EA SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0015 NV UP EI PL NZ NA PO NC
0E24:0015 43 inc BX
-t
AX=00EA BX=0001 CX=0010 DX=00EA SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0016 NV UP EI PL NZ NA PO NC
0E24:0016 E2F9 loop 0011
-t
AX=00EA BX=0001 CX=000F DX=00EA SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0011 NV UP EI PL NZ NA PO NC
0E24:0011 8A07 mov AL,[BX] DS:0001=5B
-d FFFF:0 F
FFFF:0000 EA 5B E0 00 F0 30 31 2F-30 31 2F 39 32 00 FC 55 .[...01/01/92..U
-t
AX=005B BX=0001 CX=000F DX=00EA SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0013 NV UP EI PL NZ NA PO NC
0E24:0013 03D0 add DX,AX
-t
AX=005B BX=0001 CX=000F DX=0145 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0015 NV UP EI PL NZ AC PO NC
0E24:0015 43 inc BX
-t
AX=005B BX=0002 CX=000F DX=0145 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0016 NV UP EI PL NZ NA PO NC
0E24:0016 E2F9 loop 0011
-p
AX=0055 BX=0010 CX=0000 DX=05F1 SP=0000 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0E14 SS=0E23 CS=0E24 IP=0018 NV UP EI PL NZ AC PO NC
0E24:0018 B8004C mov AX,4C00
- 将 FFFF:0 ~ FFFF:F 的数据复制到 0020H 中
DS: 数据从哪里来
ES: 数据放到哪里去
ASSUME CS:code
code SEGMENT
mov ax, 0FFFFH ; 不能以字母开头, 加 0
mov ds, ax ; 数据从哪里来
mov ax,0020H
mov es, ax ; 数据放到哪里
mov bx, 0 ; 累加
mov cx, 16 ; 循环次数
copyData:mov dl, ds:[bx] ; DX 打酱油
mov es:[bx], dl
inc bx
loop copyData
mov ax,4C00H
int 21h
code ENDS
END
- 定义数据空间
将 0123H,4567H,89ABH,0CDEFH 累加放到 AX 中
ASSUME CS:code
code SEGMENT
DW 0123H,4567H,89ABH,0CDEFH ; 定义字型数据, 放在 CS:0 开始的地址段中
start: ; 不加 start 会从DW处定义的字形数据当作指令来开始
mov ax,cs
mov ds,ax ; 数据从哪里来
mov ax,0 ; 初始化数据
mov bx,0 ; 累加
mov cx,4 ; 循环4次
addNumber:add ax,ds:[bx]
add bx,2 ; 字型数据
loop addNumber
mov ax,4C00H
int 21h
code ENDS
END start
# 调试模式
-u
0E24:0008 8CC8 mov AX,CS
0E24:000A 8ED8 mov DS,AX
0E24:000C B80000 mov AX,0000
0E24:000F BB0000 mov BX,0000
0E24:0012 B90400 mov CX,0004
0E24:0015 0307 add AX,[BX]
0E24:0017 83C302 add BX,+02
0E24:001A E2F9 loop 0015
0E24:001C B8004C mov AX,4C00
0E24:001F CD21 int 21
0E24:0021 06 push ES
0E24:0022 7613 JBE 0037
0E24:0024 8F067413 pop [1374]
-d cs:0 F
0E24:0000 23 01 67 45 AB 89 EF CD-8C C8 8E D8 B8 00 00 BB #.gE............
-r
AX=0000 BX=0000 CX=0021 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E14 ES=0E14 SS=0E23 CS=0E24 IP=0008 NV UP EI PL NZ NA PO NC
0E24:0008 8CC8 mov AX,CS
-g 0012
AX=0000 BX=0000 CX=0021 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=0012 NV UP EI PL NZ NA PO NC
0E24:0012 B90400 mov CX,0004
-t
AX=0000 BX=0000 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=0015 NV UP EI PL NZ NA PO NC
0E24:0015 0307 add AX,[BX] DS:0000=0123
-t
AX=0123 BX=0000 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=0017 NV UP EI PL NZ NA PO NC
0E24:0017 83C302 add BX,+02
-t
AX=0123 BX=0002 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=001A NV UP EI PL NZ NA PO NC
0E24:001A E2F9 loop 0015
-t
AX=0123 BX=0002 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=0015 NV UP EI PL NZ NA PO NC
0E24:0015 0307 add AX,[BX] DS:0002=4567
-t
AX=468A BX=0002 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=0017 NV UP EI PL NZ NA PO NC
0E24:0017 83C302 add BX,+02
-t
AX=468A BX=0004 CX=0003 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=001A NV UP EI PL NZ NA PO NC
0E24:001A E2F9 loop 0015
-p
AX=9E24 BX=0008 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E24 IP=001C NV UP EI PL NZ NA PO NC
0E24:001C B8004C mov AX,4C00