題:編寫乙個子程式,將包含任意字元,以0結尾的字串中的小寫字母轉變成大寫字母,描述如下。
名稱: letterc
功能: 將以0結尾的字串中的小寫字母轉變成大寫字母。
引數: ds:si指向字串首位址。
如題,任意字元,就得考慮一些其他字元,這就需要劃分乙個範圍,就是取出的字元應該在小寫字母的ascii碼範圍內。
這就可以用cmp指令和條件轉移指令。
assume cs:code,ds:data
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 far ptr letterc ;呼叫子程式.功能:將以0結尾的字串中小寫字母轉變成大寫字母。
mov ax,4c00h
int 21h
comment !
子程式:將以0結尾的字串中小寫字母轉變成你大寫字母。
!letterc: push si
push di
push ax
push bx
push dx
push cx
mov dl,61h ;小寫字母的最小字母a的16進製制。
mov dh,7ah ;小寫字母最大字母z的16進製制。
comment !
標號b。作用:1.取字元
2.判斷是否最後乙個字元
3.判斷取出的字元是否在是大寫字母而不是其他字元
4.如果是大寫字母,則轉換為小寫覆蓋原處
4.如果是其他字元則重新跳轉到b標號.迴圈1步驟
!b : mov al,ds:[si] ;將字串送入到al中。
mov ah,0
mov cx,ax ;將ax中的值送入到cx,用來判斷是否取到最後乙個字元。
jcxz r ;如果cx中的值等於0的話,跳轉到r標號。
cmp al,dl ;判斷al的中的字元是否大於等於 小寫字母a的ascii碼。
jna a ;如果不大於等於則跳轉到標號a處。用來判斷al中的是否是小寫字母,而不是其他字元。
cmp al,dh ;判斷al中的字元是否小於等於 小寫字母z的ascii碼。
jnb a ;如果不小於等於則跳轉到a標號處。
and al,11011111b
mov ds:[si],al
comment !
標號a. 作用:用來指向下乙個字串。
!a: inc si
jmp b
comment !
標號r. 作用:將原暫存器的值返回並返回程式。
!r: pop cx
pop dx
pop bx
pop ax
pop di
pop si
retf
code ends
end start
王爽組合語言實驗11
實驗11 第一次發表文章,試一試 assume cs code data segment db beginner s all purpose symbolic instruction code.0 data ends stack segment db 16 dup 0 stack ends code...
組合語言 《組合語言》王爽 實驗一
從 1000 0 開始寫入命令 a 1000 0 mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx mov bx,ax add ax,bx mov ax,001a mov bx,0026 add al,bl add ah,bl add bh,al mov a...
組合語言 王爽 實驗4
這學期在學彙編,沒怎麼自己動手程式設計過,結果到了中期編不出程式來,實在太尷尬了 特此來補各個實驗。4 11 0 200 0 20b 為什麼等同於 0020 0 0020b?0 200 0x16h 200 00200h 所以拆分成不同的形式即可轉換 assume cs code code segme...