dd-dup

Tutorial: 汇编基础 Category: C语言 Published: 2026-04-07 13:58:26 Views: 20 Likes: 0 Comments: 0
1. dd 指令
ASSUME CS:code,DS:data,SS:stack

data SEGMENT
           dd 1
           dd 100001      ; 2 word | 4 byte
           dw 1           ; 1 word | 2 byte
           db 1           ; 1 byte
           db "zk"        ; 1 byte
data ENDS

stack SEGMENT
            DB 128 dup(1)      ; 8x16行0
stack ENDS

code SEGMENT
      start:mov ax, stack
            mov ss,ax
            mov sp,128

            mov ax,data
            mov ds,ax

            mov ax,4C00H
            int 21h

code ENDS
END start
-d ds:0 f                                                                    
0E24:0000  01 00 00 00 A1 86 01 00-01 00 01 7A 6B 00 00 00   ...........zk...
2. 使用 dd 计算 100001 / 100
ASSUME CS:code,DS:data,SS:stack

data SEGMENT
           dd 100001      ; 2 word | 4 byte | 2^32 = 4294 967 296
           dw 1           ; 1 word | 2 byte | 2^16 = 65536
           db 1           ; 1 byte          | 2^8  = 256
           ; ax/bx/cx/dx 存放一个字, 就是两个字节
data ENDS

stack SEGMENT
            DB 128 dup(0)      ; 8x16行0
stack ENDS

code SEGMENT
      start:mov ax, stack
            mov ss,ax
            mov sp,128

            mov ax,data
            mov ds,ax

            mov ax,ds:[0]
            mov dx,ds:[2]
            mov bx,64H
            div bx

            mov ax,4C00H
            int 21h

code ENDS
END start
-u
0E2D:0000 B8250E        MOV     AX,0E25
0E2D:0003 8ED0          MOV     SS,AX
0E2D:0005 BC8000        MOV     SP,0080
0E2D:0008 B8240E        MOV     AX,0E24
0E2D:000B 8ED8          MOV     DS,AX
0E2D:000D A10000        MOV     AX,[0000]
0E2D:0010 8B160200      MOV     DX,[0002]
0E2D:0014 BB6400        MOV     BX,0064
0E2D:0017 F7F3          DIV     BX
0E2D:0019 B8004C        MOV     AX,4C00
0E2D:001C CD21          INT     21
0E2D:001E E89A07        CALL    07BB
-g 17

AX=86A1  BX=0064  CX=00AE  DX=0001  SP=0080  BP=0000  SI=0000  DI=0000
DS=0E24  ES=0E14  SS=0E25  CS=0E2D  IP=0017   NV UP EI PL NZ NA PO NC
0E2D:0017 F7F3          DIV     BX
-d ds:0
0E24:0000  A1 86 01 00 01 00 01 00-00 00 00 00 00 00 00 00   ................
0E24:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E24:0070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-t

AX=03E8  BX=0064  CX=00AE  DX=0001  SP=0080  BP=0000  SI=0000  DI=0000
DS=0E24  ES=0E14  SS=0E25  CS=0E2D  IP=0019   NV UP EI PL NZ NA PO CY
0E2D:0019 B8004C        MOV     AX,4C00
3. dup 伪指令
stack SEGMENT
            DB 16 dup(0)
            DW 16 dup(1)
            DD 16 dup(2)
stack ENDS

-d ss:0                                                                      
0E25:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0E25:0010  01 00 01 00 01 00 01 00-01 00 01 00 01 00 01 00   ................
0E25:0020  01 00 01 00 01 00 01 00-01 00 01 00 01 00 01 00   ................
0E25:0030  02 00 00 00 02 00 00 00-02 00 00 00 02 00 00 00   ................
0E25:0040  02 00 00 00 02 00 00 00-02 00 00 00 02 00 00 00   ................
0E25:0050  02 00 00 00 02 00 00 00-02 00 00 00 02 00 00 00   ................
0E25:0060  02 00 00 00 02 00 00 00-02 00 00 00 02 00 00 00   ................
Prev: 除法 Next: 实验7