主题:麻烦大家帮我解释一下?
data segment
bg db 0ah,0dh,"two tigers$"
freq dw 2 dup(262,294,330,262)
dw 2 dup(330,349,392)
dw 2 dup(392,440,392,349,330,262)
dw 2 dup(294,196,262),0
time dw 1000 dup(2500),5000,2500,2500,5000
dw 2 dup(1200,1200,1200,1200,2500,2500)
dw 2 dup(2500,2500,5000)
data ends
stack segment para stack 'stack'
dw 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stackstart (这是什么意思?)
start proc far (定义伪指令far)
push ds (将ds压入堆栈,但它压到那个寄存器?)
xor ax,ax (异或,但这个有什么作用?结果为是多少?)
push ax (刚刚ds出经压入,现在压入ax,那么刚刚ds的数据在堆栈中是不是往下移?ax的数据是不是栈顶上?)
mov ax,data (将data的数据,移到ax中)
mov ds,ax (在将ax的内容移到数据段寄存器中)
mov dx,offset bg (将bg的偏移量移给dx)
mov ah,9 (把9移到ah.但不知道有什么作用?)
int 21h (调中继21h,不知它有什么作用?)
mov si,offset freq (将freq的偏移量移给si)
mov bp,offset time (将time的偏移量移给bp)
call sing (调用sing过程)
mov ah,4ch (将4c移到ah,但不知它有什么作用?)
int 21h (调中继21h,不知它有什么作用?)
start endp
以上注释是我自己解的,大家看看对不对?其中有很多不明白的,请麻烦帮我解解好吗?我将感激不尽!谢谢!
bg db 0ah,0dh,"two tigers$"
freq dw 2 dup(262,294,330,262)
dw 2 dup(330,349,392)
dw 2 dup(392,440,392,349,330,262)
dw 2 dup(294,196,262),0
time dw 1000 dup(2500),5000,2500,2500,5000
dw 2 dup(1200,1200,1200,1200,2500,2500)
dw 2 dup(2500,2500,5000)
data ends
stack segment para stack 'stack'
dw 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stackstart (这是什么意思?)
start proc far (定义伪指令far)
push ds (将ds压入堆栈,但它压到那个寄存器?)
xor ax,ax (异或,但这个有什么作用?结果为是多少?)
push ax (刚刚ds出经压入,现在压入ax,那么刚刚ds的数据在堆栈中是不是往下移?ax的数据是不是栈顶上?)
mov ax,data (将data的数据,移到ax中)
mov ds,ax (在将ax的内容移到数据段寄存器中)
mov dx,offset bg (将bg的偏移量移给dx)
mov ah,9 (把9移到ah.但不知道有什么作用?)
int 21h (调中继21h,不知它有什么作用?)
mov si,offset freq (将freq的偏移量移给si)
mov bp,offset time (将time的偏移量移给bp)
call sing (调用sing过程)
mov ah,4ch (将4c移到ah,但不知它有什么作用?)
int 21h (调中继21h,不知它有什么作用?)
start endp
以上注释是我自己解的,大家看看对不对?其中有很多不明白的,请麻烦帮我解解好吗?我将感激不尽!谢谢!