汇编语言

  1. 用串传送指令,将data段中的第一个字符串复制到它后面的空间中
 assume cs:code
 data segment
  db 'welcome to class'
  db 16 dup (0)
data ends
 code segment
 start:
     
 










code ends
     end start

完整代码:

    assume cs:code
data segment
     db 'welcome to class'
     db 16 dup(0)
    data ends
    code segment
    start:
    mov ax,data
    mov ds,ax
    mov si,0
    mov cx,8
   s:mov ax,[si]
    mov[si+16],ax
    add si,2
    loop s
    mov ax,4c00h
    int 21h
code ends
end start

测试前:
汇编语言_第1张图片
测试后:
汇编语言_第2张图片
2. 计算data段中第一组数据的4次方,结果保存在后面一组dword单元中。

assume cs:code
data segment
	dw 1,2,3,4,5,6,7,8
	dd 0,0,0,0,0,0,0,0
data ends

code segment
start:













code ends
end start

完整代码:

  assume cs:code
  data segment
    dw 1,2,3,4,5,6,7,8
    dd 0,0,0,0,0,0,0,0
  data ends
  code segment
    start:mov ax,data
          mov ds,ax
          mov si,0
          mov di,16
          mov cx,8
        s:mov bx,[si]
          call cube
          mov [di],ax
          mov [di].2,dx
          add si,2
          add di,4
          loop s
          mov ax,4c00h
          int 21h
     cube:mov ax,bx
          mul bx
          mul bx
          mul bx
          ret
     code ends
     end start

测试前:
汇编语言_第3张图片
测试后:
汇编语言_第4张图片

  1. 编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转为大写字母,描述如下:
    名称:letterc
    功能:将以0结尾的字符串中的小写字母转为大写字母
    参数:ds:si指向字符串首地址
    注意:需要进行转化的是字符串中的小写字母a~z,而不是其他字符
assume cs:code
data segment
  db 'Beginner`s All-purpose Symbolic Instruction Code.',0
data ends

code segment
start:
	mov ax,data
    mov ds,ax
    mov si,0
    call letter
	
    mov ax,4c00h
    int 21h

letter:









code ends
end start

完整代码:

assume cs:codesg
datasg segment
	db "Beginner's All-purpose Symbolic Instruction Code.", 0
datasg ends
codesg segment
start:	mov ax, datasg
	mov ds, ax
	mov si, 0
	call letterc
	mov ax, 4c00h
	int 21h
letterc:
	push ax
	push bx
	push cx
	push dx
letterc_ok:
	xor cx, cx
	mov cl, ds:[si]
	jcxz letterc_ret
	cmp cx, 'a'
	jb next
	and byte ptr ds:[si], 11011111b
next:	inc si
	jmp letterc_ok
letterc_ret:
	pop dx
	pop cx
	pop bx
	pop ax
	ret
codesg ends
end start

测试前:
汇编语言_第5张图片
测试后:
汇编语言_第6张图片
4. 编程,将data段中以0结尾的每个单词转成大写。

assume cs:code
data segment
	db '1. display',0      
	db '2. brows',0
	db '3. replace',0
	db '4. modify ',0
data ends

code segment
start:











code ends
end start

完整代码:

assume cs:code
data segment
 db '1. display',0
 db '2. brows',0
 db '3. replace',0
 db '4. modify',0
data ends
code segment
start:	
		mov ax,data
		mov ds,ax
		mov si,0
		call s		
		mov ax,4c00h
		int 21h	
	s:	mov cx,[si]
		jcxz s1
		mov al,[si]
		and al,11011111b
		mov [si],al
		inc si
		jmp short s		
	s1: mov al,[si+1];比较下一个是否为字母
		cmp al,'z'  ;ASCII小于z则继续
		jb s2
		ret
	
	s2:	cmp al,'A'  ;ASCII大于A则继续
		inc si
		ja s
		ret
		
code ends
end start

测试前:
汇编语言_第7张图片
测试后:
汇编语言_第8张图片

你可能感兴趣的:(汇编语言,stu,编程语言)