王爽 匯編 問題7.7,編程將datasg段中每個單詞改為大寫字母


一、代碼實現

 1 ;目的:處理數據段中的數據,將每一行的小寫字母大寫
 2 ;編寫:Tony
 3 ;語言:asm
 4 ;時間:2020.3.24
 5 
 6 
 7 
 8 ;定義代碼段、數據段、棧段
 9 assume cs:code,ds:data,ss:stacksg
10 
11 ;數據段
12 data segment
13     db 'ibm.............'
14     db 'aoc.............'
15     db 'ios.............'
16     db 'asm.............'
17 data ends
18 
19 ;棧段
20 stacksg segment
21     dw 0,0,0,0,0,0,0,0        ;初始化8個字數據單元(不要把數據放在單引號內)
22 stacksg ends
23 
24 ;代碼段
25 code segment
26 
27 start:  mov ax,stacksg         ;棧段地址送ax
28         mov ss,ax            ;ax中的數據送棧寄存器
29         mov sp,10h            ;設置棧底的位置
30         
31         mov ax,data            ;數據段地址送ax
32         mov ds,ax            ;ax中的數據送數據段寄存器
33         
34         mov bx,0            ;初始化數據段中的偏移地址
35         mov cx,4            ;初始化外層循環次數
36                 
37 s:      push cx                ;保存外層循環數據到棧中
38         mov si,0            ;初始化數據段中的偏移地址
39         mov cx,3            ;初始化內層循環次數
40 s1:     mov al,[bx+si]        ;將ds:[bx+si]中的數據送al
41         and al,11011111b    ;將al中的第5位置0,將字母大寫
42         mov [bx+si],al        ;將字母大寫后寫回內存單元
43         inc si                ;偏移地址自增1
44         loop s1                ;循環處理將字母大寫
45         
46         add bx,10h            ;修改段數據中行偏移地址
47         pop cx                ;出棧恢復cx的數據
48         loop s                ;循環處理段數據中的4段數據
49 
50         mov ax,4c00h
51         int 21h
52 code ends
53 end start

 

二、上機調試

0)話不多說,進入虛擬機的xp系統,打開cmd命令窗口,准備開擼……查看內存中的匯編代碼

 1)在調試之前查看一下各個寄存器的數據

 2)用t指令開始單步調試代碼,執行第一條指令 MOV AX,0B3C,看寄存的變化

 棧段地址0B3C送賦值給寄存器ax

3)繼續執行下一條指令

 將棧段地址送棧段寄存器ss

4)在執行完mov ds,ax后,查看初始化后數據段中的數據

 5)略過……,直接來到第一次外循環處

 cx壓入棧,保存cx數據到棧中

6)第一次內循環開始處

 7)第一次內循環結束處

 8)查看數據段中的數據

 可以看出第一段數據的小寫字母已經大寫了,嗯……成功了一小步

9)來到第二次外循環處

 最明顯的就是數據段的偏移地址BX=0X0010,此時就開始准備轉換第二組數據'aoc'

10)第二次內循環開始處

  11)第二次內循環結束處

  12)查看數據段中的數據

 可以看出第二段數據的小寫字母已經大寫了……開心啊

13)略過……直接執行完成后數據段中的數據

 嗯哼,成功啦,全部變成大寫字母了……

14)程序正常結束

 15)返回cmd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM