g proadd2 asm public proadd data segment common ary dw1,2,3,4,5,6,7,8,9,10 count dw 10 sum d data ends code2 segment proadd proc far assume cs: code2, ds: data mov ax. data mov ds, ax proadd endp code2 ends end
11 ; proadd2.asm public proadd data segment common ary dw 1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw ? data ends code2 segment proadd proc far assume cs:code2,ds:data mov ax, data mov ds, ax …… proadd endp code2 ends end
存储模式与简化段定义伪操作 (1) MODEL伪操作 MODEL存储模式[语言类型][操作系统类型][堆栈选项] 存储模式: tiny sma1 medium compact large huge f1at mode small: (2)简化的段定义伪操作 stack 100H code [name] data data data? code fardata [name] star tup fardata? [name] exit o const end stack [ size] 12
12 存储模式与简化段定义伪操作 .model small .stack 100H .data …… .code .startup …… .exit 0 end (1) MODEL 伪操作 . MODEL 存储模式 [ ,语言类型 ] [ ,操作系统类型 ] [ ,堆栈选项 ] 存储模式:tiny small medium compact large huge flat (2) 简化的段定义伪操作 .code [name] .data .data? .fardata [name] .fardata? [name] .const .stack [size]
model small model small data data code code start: mov ax. adata startup mov ds. ax exit o mov ax. 4c00h end int 21h mode small end start const data code start: mov ax. DGROUP mov ds, ax mov ax. 4c00h int 21h end start
13 .model small .data …… .code .startup …… .exit 0 end .model small .data …… .code start: mov ax, @data mov ds, ax …… mov ax, 4c00h int 21h end start .model small .const …… .data …… .code start: mov ax, DGROUP mov ds, ax …… mov ax, 4c00h int 21h end start
段组定义伪操作 dsegl segment word public'data dsegl ends dseg2 segment word public 'data dseg2 ends datagroup group dsegl, dseg cseg segment para public'code assume cs: cseg, ds: datagroup start mov ax, datagroup mov ds ax mov ax 4c00h int 21h cseg ends end start
14 段组定义伪操作 dseg1 segment word public ‘data’ …… dseg1 ends dseg2 segment word public ‘data’ …… dseg2 ends datagroup group dseg1, dseg2 cseg segment para public ‘code’ assume cs:cseg, ds:datagroup start: mov ax, datagroup mov ds, ax …… mov ax, 4c00h int 21h cseg ends end start
start datal segment word mov ax, datagroup const dw 100 mov ds, ax datal ends moy ax. const l data2 segment word mov varl,ax dw data2 ends mov bx, offset var1 ;(bx)=2 mov bx, offset datal (bx)=2 datagroup group datal, data2 moy bx, offset data2 ,(bx)=4 assume ds data2 code segment mov ax, data2 assume cs: code, ds: datagroup mov ds, ax moy ax, var l mov bx, offset var1 ( bx)=2 mov ax, 4c00h int 21 h code ends end start
15 data1 segment word const1 dw 100 data1 ends data2 segment word var1 dw ? data2 ends datagroup group data1, data2 code segment assume cs:code, ds:datagroup start: mov ax, datagroup mov ds, ax mov ax, const1 mov var1, ax mov bx, offset var1 mov bx, offset data1 mov bx, offset data2 assume ds:data2 mov ax, data2 mov ds, ax mov ax, var1 mov bx, offset var1 mov ax, 4c00h int 21h code ends end start ; (bx) = 2 ; (bx) = 2 ; (bx) = 4 ; (bx) = 2