脚本宝典收集整理的这篇文章主要介绍了实验2 多个逻辑段的汇编源程序编写与调试,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
xxx segment db N dup(0) xxx ends
编写一个汇编源程序,实现向内存单元b800:0f00 ~ b800:0f9f连续160字节,依次重复填充十六进制数据03 04。 Tips:
在debug中,使用f命令,向内存单元批量填写数据。 -f b800:0f00 0f9f 03 04 把内存单元区间b800:0f00 ~ b800:0f9f连续160个字节,依次重复填充十六进制数据03 04。
assume cs:code
code segment
start:
mov ax,0b800h
mov ds,ax
mov bx,0f00h
mov ax,0304h
mov cx,80
s: mov [bx],ax
add bx,2
loop s
mov ah,4ch
int 21h
code ends
end start
已知task3.asm
assume cs:code data1 segment db 50, 48, 50, 50, 0, 48, 49, 0, 48, 49 ; ten numbers data1 ends data2 segment db 0, 0, 0, 0, 47, 0, 0, 47, 0, 0 ; ten numbers data2 ends data3 segment db 16 dup(0) data3 ends code segment start: ; ××× mov ah, 4ch int 21h code ends end start
要求:
assume cs:code
data1 segment
db 50, 48, 50, 50, 0, 48, 49, 0, 48, 49 ; ten numbers
data1 ends
data2 segment
db 0, 0, 0, 0, 47, 0, 0, 47, 0, 0 ; ten numbers
data2 ends
data3 segment
db 16 dup(0)
data3 ends
code segment
start:
mov ax,data1
mov es,ax
mov ax,data2
mov ss,ax
mov ax,data3
mov ds,ax
mov bx,0
mov cx,10
s: mov al,es:[bx]
add al,ss:[bx]
mov [bx],al
add bx,1
loop s
mov ah, 4ch
int 21h
code ends
end start
已知task4.asm
assume cs:code data1 segment dw 2, 0, 4, 9, 2, 0, 1, 9 data1 ends data2 segment dw 8 dup(?) data2 ends code segment start: ; ××× mov ah, 4ch int 21h code ends end start
要求:
assume cs:code
data1 segment
dw 2, 0, 4, 9, 2, 0, 1, 9
data1 ends
data2 segment
dw 8 dup(?)
data2 ends
code segment
start:
mov ax,data1
mov ds,ax
mov ax,data2
mov ss,ax
mov bx,0
mov sp,16
mov cx,8
s: push [bx]
add bx,2
loop s
mov ah, 4ch
int 21h
code ends
end start
运行前:
已知task5.asm
assume cs:code, ds:data data segment db 'Nuist' db 2, 3, 4, 5, 6 data ends code segment start: mov ax, data mov ds, ax mov ax, 0b800H mov es, ax mov cx, 5 mov si, 0 mov di, 0f00h s: mov al, [si] and al, 0DFh mov es:[di], al mov al, [5+si] mov es:[di+1], al inc si add di, 2 loop s mov ah, 4ch int 21h code ends end start
阅读源程序,从理论上分析源代码的功能,尤其是line15-25,循环实现的功能是什么,逐行理解每条指令的功能。
对程序进行汇编、链接,得到可执行文件,运行并观察结果。
使用debug工具对程序进行调试,执行到程序返回前,即line25执行之后、line27执行之前,观察结果。
源代码中line19的作用是? 去除后运行结果为:
修改line4里5个字节单元的值,重新汇编、链接、运行,观察结果。
db 2,3,4,5,6 --> 改成: db 5 dup(2) 或 db 5 dup(5)
修改后运行结果为:
已知task6.asm
assume cs:code, ds:data data segment db 'Pink Floyd ' ; 16字节 db 'JOAN BAEz ' ; 16字节 db 'NeiL Young ' ; 16字节 db 'Joan Lennon ' ; 16字节 data ends code segment start: ; ××× mov ah, 4ch int 21h code ends end start
要求:
assume cs:code, ds:data
data segment
db 'Pink Floyd ' ; 16字节
db 'JOAN Baez ' ; 16字节
db 'NEIL Young ' ; 16字节
db 'Joan Lennon ' ; 16字节
data ends
code segment
start:
mov ax, data
mov ds, ax
mov bx, 0
mov cx,4
s: mov al,[bx]
or al,00100000b
mov [bx],al
add bx,16
loop s
mov ah, 4ch
int 21h
code ends
end start
问题场景描述: Power idea公司1975年-1979年的基本情况如下:
assume cs:code, ds:data, es:table data segment db '1975', '1976', '1977', '1978', '1979' dw 16, 22, 382, 1356, 2390 dw 3, 7, 9, 13, 28 data ends table segment db 5 dup( 16 dup(' ') ) ; table ends code segment start: mov ah, 4ch int 21h code ends end start
要求:
补全程序,实现题目要求,把年份、收入、雇员人数、人均收入,以结构化方式写入table段中。表格中,每行数据,在逻辑段table中占16个字节,各项数据占据字节大小分配如下。期中,数据之间用空格间隔
汇编、连接后,在debug中加载、调试程序。灵活、合理使用u命令、g命令、d命令,显示刚开始逻 辑段table的数据信息,以及,结构化存入数据后,数据段table的数据信息,确认实现题目要求。
assume cs:code, ds:data, es:table
data segment
db '1975', '1976', '1977', '1978', '1979'
dw 16, 22, 382, 1356, 2390
dw 3, 7, 9, 13, 28
data ends
table segment
db 5 dup( 16 dup(' ') ) ;
table ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov si,0
mov di,0
mov bx,0
mov cx,5
mov sp,0
s: mov ax,[si]
mov es:[di],ax
mov ax,[si+2]
mov es:[di+2],ax
mov ax,[bx+20]
mov es:[di+5],ax
mov dx,0
mov es:[di+7],dx
push cx
mov cx,[20+10+bx]
mov es:[di+10],cx
div cx
pop cx
mov es:[di+0dh],ax
add si,4
add di,16
add bx,2
loop s
mov ah, 4ch
int 21h
code ends
end start
以上是脚本宝典为你收集整理的实验2 多个逻辑段的汇编源程序编写与调试全部内容,希望文章能够帮你解决实验2 多个逻辑段的汇编源程序编写与调试所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。