作业2

问题回答 ① 在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = 076C__, 寄存器(SS) = 076D__, 寄存器(CS) = 076E__ ② 假设程序加载后,code段的段地址是X,则,data段的段地址是__X-32__, stack的段地址是 X-16__。

① 在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = 076C, 寄存器(SS) = 076D__, 寄存器(CS) = 076E__ ② 假设程序加载后,code段的段地址是X,则,data段的段地址是__X-32__, stack的段地址是 X-16__。

① 在debug中将执行到line17结束、line19之前,记录此时:寄存器(DS) = 076C__, 寄存器(SS) = 076E, 寄存器(CS) = 0770__ ② 假设程序加载后,code段的段地址是X,则,data段的段地址是__X - 64__, stack的段地址是 X - 32__。

问题回答 ① 在debug中将执行到line9结束、line11之前,记录此时:寄存器(DS) = 076E, 寄存器(SS) = 0770, 寄存器(CS) = 076C ② 假设程序加载后,code段的段地址是X____,则,data段的段地址是_X + 32___, stack的段地址 是__X + 64__。
① 对于如下定义的段,程序加载后,实际分配给该段的内存空间大小是 (N + 15) / 16 * 16.
② 如果将程序task1_1.asm, task1_2.asm, task1_3.asm, task1_4.asm中,伪指令 end start 改成 end , 哪一个程序仍然可以正确执行。结合实践观察得到的结论,分析、说明原因。
最后一个,能程序找到入口

assume cs:code
code segment
start:
mov ax,0b800H
mov ds,ax
mov bx,0f00H
mov cx,80
s: mov [bx],0403H
add bx,2
loop s
mov ah,4cH
int 21H
code ends
end start

assume cs:code
data1 segment
db 50, 48, 50, 50, 0, 48, 49, 0, 48, 49 ; ten numbers
data1 ends
data2 segment
db 0, 0, 0, 0, 47, 0, 0, 47, 0, 0 ; ten numbers
data2 ends
data3 segment
db 16 dup(0)
data3 ends
code segment
start:
mov ax,data1
mov bx,0
mov cx,10
mov dx,data2
mov es,ax
mov ax,data3
mov ds,ax
s:
mov ax,0
add ax,es:[bx]
mov es,dx
add ax,es:[bx]
mov ds:[bx],ax
mov ax,data1
mov es,ax
add bx,2
loop s
mov ah,4ch
int 21h
code ends
end start

assume cs:code
data1 segment
dw 2, 0, 4, 9, 2, 0, 1, 9
data1 ends
data2 segment
dw 8 dup(0)
data2 ends
code segment
start:
mov ax,data2
mov ds,ax
mov ax,data1
mov es,ax
mov cx,8
mov bx,0
mov di,14
s: mov ax,es:[bx]
mov ds:[di],ax
add bx,2
sub di,2
loop s
mov ah, 4ch
int 21h
code ends
end start



assume cs:code, ds:data
data segment
db 'Pink Floyd '
db 'JOAN Baez '
db 'NEIL Young '
db 'Joan Lennon '
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
add byte ptr ds:[bx],32
add byte ptr ds:[bx+16],32
add byte ptr ds:[bx+17],32
add byte ptr ds:[bx+18],32
add byte ptr ds:[bx+19],32
add byte ptr ds:[bx+32],32
add byte ptr ds:[bx+33],32
add byte ptr ds:[bx+34],32
add byte ptr ds:[bx+35],32
add byte ptr ds:[bx+48],32
mov ah, 4ch
int 21h
code ends

assume cs:code, ds:data, es:table
data segment
db '1975', '1976', '1977', '1978', '1979'
dw 16, 22, 382, 1356, 2390
dw 3, 7, 9, 13, 28
data ends
table segment
db 5 dup( 16 dup(' ') ) ;
table ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov cx,5
mov bx,0 ;bx是data的行指针
mov si,0 ;si是table的行指针
mov di,0 ;di是data的列指针
s: mov al,ds:[bx+di]
mov es:[si],al
mov al,ds:[bx+di+1]
mov es:[si+1],al
mov al,ds:[bx+di+2]
mov es:[si+2],al
mov al,ds:[bx+di+3]
mov es:[si+3],al
shr di,1
add si,7
mov bx,20
mov bp,ds:[bx+di]
mov es:[si],bp
mov ax,ds:[bx+di]
mov bx,30
add si,3
mov bp,ds:[bx+di]
mov es:[si],bp
mov dx,ds:[bx+di]
add si,3
div dl
mov ah,0
mov es:[si],ax
shl di,1
add di,4
add si,3
mov bx,0
loop s
mov ah, 4ch
int 21h
code ends
end start

浙公网安备 33010602011771号