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

2021-09-27 06:35:00 字數 1448 閱讀 8769

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

名稱:letterc

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

應用舉例:

assume cs:codesg

datasg segment

db "beginner's all-purpose symbolic instruction code.",0

datasg ends

codesg segment

begin: mov ax, datasg

mov ds, ax

mov si, 0

call letterc

mov ax, 4c00h

int 21h

letterc: :

:codesg ends

end begin

程式分析:

1.在資料段定義了乙個字串,注意這個字串不光是有大小寫字元,還有其他字元,並以0結尾。

2. 判斷字串中的字元是否是小寫字母?因為小寫字母『a』~『z』是連續的ascii碼

3.如果是小寫字母使用and 11011111b指令轉換成大寫的。

彙編**如下:

assume cs:code

data segment

db "beginner's all-purpose symbolic instruction code.",0

data ends

code segment

begin:mov ax, data

mov ds, ax

mov si, 0

mov es, ax

mov di, 0

call letterc

mov ax, 4c00h

int 21h

letterc:push si

comp:cmp byte ptr [si], 0

je ok

cmp byte ptr [si], 61h

jb next

cmp byte ptr [si], 7ah

ja next

and byte ptr [si], 11011111b

next:inc si

jmp short comp

ok:pop si

retcode ends

end begin

執行前內容為:

執行後結果為:

實驗主要考察對cmp指令的運用

《組合語言》王爽第三版 實驗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段中 兩種方法我都使用...

《組合語言(第三版)》王爽,實驗九

不知道為什麼,在win7下用的emu8086,顯示會錯位,到不了中間位置 在網上找了下別人的 發現即使是在別人那裡能正常顯示在中間位置,複製到我這裡都會顯示為上圖所示的樣子。下面是 定義資料段的時候為了後面不用將ascii碼和屬性分開讀取,就定義成如下這樣比較繁瑣的形式了。其實做的時候第一時間沒想到...