【第九章】实验8&实验9

实验8 分析一个奇怪的程序

1.PNG

答案:cs:[si]复制了指令jmp short s1的机器码。其机器码为EBF6,代表从nop向前偏移-10个字节。在cs:[offset s]处,因为源程序基本一致,所以会偏移到程序开始时mov ax,4c00h处,使程序结束

实验9 根据材料编程

1.PNG

2.PNG

分析:

assume cs:code,ds:data

data segment
	db 'welcome to masm!'
	db 138,44,113
data ends

code segment
start:	;先将data段中的地址拷贝到ds中
	mov ax,data
	mov ds,ax
	mov bx,0

	;然后用es存储段地址B800
	mov ax,0b800h
	mov es,ax
	;从0A0开始存放字符
	mov si,06E0h

	;将栈中最顶层的格式pop出来
	mov ah,ds:[16]
	;循环16次,将一行的数据都放入内存中
	mov cx,16
s0:	mov al,ds:[bx]
	mov es:40[si],al
	mov es:41[si],ah
	add si,2
	inc bx
	loop s0

	;显示第二行
	mov bx,0
	mov ah,ds:[17]
	mov si,0780h
	mov cx,16
s1:	mov al,ds:[bx]
	mov es:40[si],al
	mov es:41[si],ah
	add si,2
	inc bx
	loop s1

	;显示第三行
	mov bx,0
	mov ah,ds:[18]
	mov si,0820h
	mov cx,16
s2:	mov al,ds:[bx]
	mov es:40[si],al
	mov es:41[si],ah
	add si,2
	inc bx
	loop s2

	mov ax,4c00h
	int 21h
code ends

end start