彙編語言-王爽(第三版)實驗11 編寫子程序 筆記

 編寫一個子程序,將包含任意字符,以0結尾的字符串中的小寫字母轉變爲大寫字母,描述如下:

名稱:letterc

功能:將以0結尾的字符串中的小寫字母轉變爲大寫字母

參數:di:si指向字符串首地址

整體思路:

1.設置好指向字符串的指針

2.call進入子程序

3.結束

子程序思路:

1.將字符放置在一個字節型寄存器中,例如bl

2.cmp判斷當前字符是否爲0,如果爲0,則跳轉到退出子程序的指令處

3.cmp判斷當前字符是否在【97,122】範圍內,如果不在,那麼處理下一個字符

4.退出子程序的指令ret

注意:

1.由於題目要求轉化的是字符串的小寫字母,而不是其他字符(標點符號不能轉化),因此要限定字符的ASCII範圍

2.爲了便於書寫,將內存數據放在字節型寄存器中,自動匹配需要取得的內存長度

3.因爲不考慮字符串長度,不適用cx和loop指令,而是使用類似do-while的編程思想,即,直接使用jmp指令

DATAS SEGMENT
	db "Beginner's All-purpose Symbolic Instruction Code.",0
DATAS ENDS

STACKS SEGMENT
    
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
	mov ax,datas
	mov ds,ax
	mov si,0	;設置指針指向字符串首個字符
	call s1 
    ;此處輸入代碼段代碼
    MOV AH,4CH
    INT 21H

s1:	mov bl,[si]
	cmp bl,0
	je s0
	cmp bl,97
	jb s2
	cmp bl,122
	ja s2
	and bl,11011111B
	mov [si],bl
s2:	inc si
	mov ax,offset s1
	jmp ax
s0: ret

CODES ENDS

END START

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章