汇编语言 王爽 第四版 实验4

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

实验4 [bx]和loop的使用

1

编程,向内存0:200~0:23f依次传送数据0~63(3fh)

assume cs:code
code segment
	
	mov ax,0
	mov ds,ax;设置ds=0
	
	mov bx,200h;设置从200h开始
	mov cx,64;循环64次
	mov al,0;传送的数据
	
s:	mov [bx],al
	inc bx
	inc al
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end

这个还是挺好写的…

2

编程,向内存0:200-0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,其中包括mov ax,4c00hint 21h

0000:0200-0000:023F等同于0020:00-0002:3F

这里可以改一下,把bx和al合并一下

assume cs:code
code segment
	
	mov ax,20h
	mov ds,ax;设置ds=0
	
	mov cx,64;循环64次
	mov al,0;传送的数据
	
s:	mov [al],al
	inc al
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end

3

补全下面的程序,其功能是将mov ax,4c00之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果

提示:

  1. 复制了什么?从哪里到哪里?
  2. 复制的是什么?有多少字节,你如何知道要复制的字节数量?
assume cs:code
code segment

    mov ax,___
    mov ds,ax;ds的地址为ax
    mov ax,0020h
    mov es,ax;es是20h
    mov bx,0
    mov cx,___
    
s:	mov al,[bx];将ds;bx的值赋值给al
    mov es:[bx],al;将al的值赋值给es[bx]
    inc bx;bx++
    loop s

    mov ax,4c00h
    int 21h

code ends
end

不好意思看了一下答案,第一个空那里应该填cs,因为需要将mov ax,4c00之前的指令复制到内存0:200处,那么程序开始就是cs:ip,所以段地址是cs

第二个空填17,可以用debug的u命令看出来,在mov ax,4c00h前一共有17个字节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-POkWhiY5-1635432450733)(C:\Users\windows\AppData\Roaming\Typora\typora-user-images\image-20211028224551026.png)]

04ae:000004ae:0010,一共17字节

Guess you like

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