組合語言 王爽(第三版)實驗11 編寫子程式 筆記

2021-10-06 20:32:59 字數 1246 閱讀 6807

編寫乙個子程式,將包含任意字元,以0結尾的字串中的小寫字母轉變為大寫字母,描述如下:

名稱:letterc

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

整體思路:

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

組合語言 王爽 第三版)實驗11 編寫子程式

編寫乙個子程式,將包含任意字元,以0結尾的字串中的小寫字母轉變成大寫字母,描述如下。名稱 letterc 功能 將以0結尾的字串中的小寫字母轉變成大寫字母 應用舉例 assume cs codesg datasg segment db beginner s all purpose symbolic ...

《組合語言》王爽第三版 實驗9

datas segment 此處輸入資料段 db w 00000010b,e 00000010b,l 00000010b,c 00000010b,o 00000010b db m 00000010b,e 00000010b,0,t 00100100b,o 00100100b,0 db m 01110...

王爽 組合語言第三版實驗7

這個題目做了很久,使用了2中方法做出了結果,不過目前在單步除錯時還有點疑問。題目 power idea公司從1975成立一直到1995年的基本情況被定義到了datasg中,程式設計將datasg段中的資料寫入到table段中,並計算21年中的人均收入 取整 結果儲存到table段中 兩種方法我都使用...