汇编语言 王爽 第四版 第六章 检测点6.1

汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~

检测点6.1

1

下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:

assume cs:codesg
codesg segment 

	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h;ip为0,2,4,6,8..

start:	mov ax,0
		mov ds,ax;ds设置为0
		mov bx,0

		mov cx,8;8次循环
s:		mov ax,[bx]
    	___;填写的地方,应该填写`mov cs:[bx],ax`
		add bx,2
		loop s

		mov ax,4c00h
		int 21h

codesg ends
end start

填写mov cs:[bx],ax,因为我们需要把0:0~0:15复制到cs:0~cs:15上,刚好用bx来做位移下标,字所占2字节,所以bx每次加2

2

下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:

assume cs:codesg

codesg segment 
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
	dw 0,0,0,0,0,0,0,0,0,0

start:	mov ax,___;应该填cs,因为栈空间被放到了程序的开头进行声明
		mov ss,ax;设置ss的值
		mov sp,___;设置sp的值,应该填24h,因为前面还有8个字,即16字节,栈顶是往高位 数,而且栈里面有10个字节
		
		mov ax,0;
		mov ds,ax;ds为0
		mov bx,0;bx用做下标
		mov cx,8;循环8次

s:		push [bx];把0:[bx]入栈
		pop cs:___;这里应该赋值给cs:[bx],所以填写[bx]
		add bx,2
		loop s 

		mov ax,4c00H
		int 21h

codesg ends
end start

依次填写:

cs,24h,[bx],解释在注释中

Guess you like

Origin blog.csdn.net/Dueser/article/details/121048638