汇编分析作业

发布 2022-08-27 20:15:28 阅读 1274

1.现有程序如下:

data segment

buf db ‘ai39*5867jfe=kjykgngk339385’

c= $buf

n1 db 0

n2 db 0

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov cx,c

lea si,buf

l: mov al,[si]

cmp al,30h

jb next

cmp al,39h

ja next

inc n1

jmp cont

next: inc n2

cont: inc si

loop l

mov ah,4ch

int 21h

code ends

end start

请回答:(1)该程序完成什么功能?

分别统计buf中数字字符和非数字字符的个数。

(2)该程序执行完后,n1和n2的内容各是多少?

n1=12, n2=15

2.现有程序如下:

data segment

buf db ‘er39*5867jgeewfghyuo9385’

c = buf

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,c

lea si,buf

l: mov al,[si]

cmp al,61h

jb next

cmp al,7ah

ja next

sub al,20h

mov [si],al

next: inc si

loop l

mov ah,4ch

int 21h

code ends

end start

请回答:(1)该程序完成什么功能?

将buf字符串中的小写字母转换成大写字母。

(2)该程序执行完后,buf缓冲区的内容是什么?

er39*5867jgeewfghyuo9385

3.现有程序如下:

data segment

buf db 47h,0a4h,93h,38,-23,55h,251,0,78h

c=$-buf

buf1 db c dup (0)

buf2 db c dup (0)

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,c

lea si,buf

lea di,buf1

lea bx,buf2

l: mov al,[si]

cmp al,0

jge pmov [bx],al

inc bx

jmp next

p: mov [di],al

inc di

next: inc si

loop l

mov ah,4ch

int 21h

code ends

end start

请回答:(1)该程序完成什么功能?

把buf缓冲区的内容按大于等于0和小于0分成两组,大于等于0的放在buf1里,小于0的放在buf2里。

(2)该程序执行完后,buf1和buf2缓冲区的内容各是什么?

buf1缓冲区内容:47h,38,55h,0,78h

buf2缓冲区内容:0a4h,93h,-23,251

4.现有程序如下:

data segment

buf1 db 100 dup (?

buf2 db 200 dup (0)

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,100

lea si,buf1

lea di,buf2+100

l: mov al,[si]

mov [di],al

inc si

inc di

loop l

mov , ah,4ch

int 21h

code ends

end start

请回答 :(1)该程序完成什么功能?

把buf1中100个字节内容送入buf2中的后100个字节单元中。

(2)如果将指令“lea di,buf2+100”改为“lea di,buf2”之后,程序执行完后的结果如何?

把buf1中的100个字节内容送入buf2中的前100个字节单元中。

5.现有程序如下:

data segment

buf1 db 100 dup (?

buf2 db 100 dup (0)

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,100

lea si,buf1

lea di,buf2

l: mov al,[si]

cmp al,100

jb next

mov [di],al

i nc di

next: inc si

loop l

mov ah,4ch

int 21h

code ends

end start

请回答 :(1)该程序完成什么功能?

把buf1中大于等于100的数放到buf2中。

(2)如果将指令“jb next”改为“jae next”,则程序执行结果如何?

把buf1中小于100的数放到buf2中。

6.现有程序如下:

data segment

buf1 db 100 dup (?

sum dw 0

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,100

lea si,buf1

mov ax,0

l: add al,[si]

adc ah,0

inc si

loop l

mov sum,ax

mov ah,4ch

int 21h

code ends

end start

请回答 :(1)该程序完成什么功能?

求buf1中所有数之和。

(2)如果去掉指令“adc ah,0”,则程序执行结果将如何?

出现溢出,高位字节丢失。

7.现有程序如下:

data segment

buf1 db 32h,64h,72h,38h,68h,9ah,89h,0

sum dw 0

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

lea si,buf1

mov ax,0

l: cmp [si],byte ptr 0

jz ndo

add al,[si]

adc ah,0

inc si

jmp lndo: mov sum,ax

mov ah,4ch

int 21h

code ends

end start

请回答 :(1)该程序完成什么功能?

求所有数的和sum

2)程序执行完后,共执行了多少次相加的操作?

总共完成了7次相加。

8.现有程序如下:

stack segment stack ‘stack’

dw 100 dup(0)

stack ends

data segment

buf db 100 dup(0)

data ends

code segment

assume cs:code,ds:data,ss:stack

start:mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

lea di,buf

l: mov ah,1

汇编大作业

汇编语言 期末大作业。一 通过键盘输入月份 月份在1 12之间,要求验证所输入月份的合法性,按 e 或 e 键表示程序结束 在屏幕上显示对应该月份的英文单词 返回 data segment state1 db please input your search month 0dh,0ah,state2...

汇编上机作业

微机原理上机实验报告 一 班级 学号姓名 实验目的。掌握汇编语言程序的上机过程与debug调试方法。实验内容。比较两个字符串string1和string2所含的字符是否相同。若相同则显示 match 否则,显示 no match 一 源程序见资料。二 按照上课所讲的操作步骤对以上所给源程序进行调试,...

汇编上机作业

指令系统练习。1.指出下列的错误并更正 very,block均为偏移量 mov ds,very mov very si es bl mov block dx si al mov very,block 2.在指令push ax的执行过程中,要进行的操作是 sp 2 sp sp 1 sp sp 2 sp...