当前位置:首页 > 汇编语言实验报告
实验六 不同寻址方式的灵活应用
1.将课程上所有讲解过的程序上机调试,用debug跟踪其执行过程,并在过程中进一步理解所讲内容.
程序7.1
assume cs:code,ds:data
data segment db 'unIX'
db 'foRK' ;共定义8个字节,但程序的运行位置仍在16字节之后 data ends
code segment
start: mov al,'a' mov bl,'b' mov ax,4c00h int 21h code ends end start
程序7.1.1
将第一个字符串转换为大写,将第二个字符串转换为小写
assume cs:codesg,ds:datasg
datasg segment db 'BaSiC'
db 'iNfOrMaTiOn' datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
mov cx,5 s: mov al,[bx] and al,11011111B mov [bx],al inc bx loop s
mov bx,5
mov cx,11 s0: mov al,[bx]
or al,00100000B mov [bx],al inc bx loop s0
mov ax,4c00h int 21h
codesg ends end start
;设置ds指向datasg段 ;设置bx = 0,ds:bx指向'BaSiC'的第一个字母 ;设置循环次数为5,因为'BaSiC'有5个字母 ; 将ASCII码从ds:bx所指向的单元中取出 ;将al中ASCII码的第五位置0,变为大写字母 ;将转变后的ASCII码写回原单元 ;bx 加1,ds:bx指向下一个字母 ;设置bx = 5,ds:bx指向'iNfOrMaTiOn' 的第一个字母;设置循环次数11,因为'iNfOrMaTiOn'有11个字母 ;将al中的ASCII码的第五位置为1,变为小写字母
问题7.6
编程,将 datasg 段中的每个单词的头一个字母改为大写字母
assume cs:codesg,ds:datasg
datasg segment
db '1. file ' db '2. edit ' db '3. search ' db '4. view ' db '5. options ' db '6. help ' datasg ends
codesg segment
start: mov ax,datasg mov ds,ax
mov bx,0
mov cx,6 s: mov al,[bx+3] and al,11011111B mov [bx+3],al add bx,16 loop s
mov ax,4c00h int 21h
codesg ends end start
共分享92篇相关文档