福州大学汇编实验答案参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DATA SEGMENT

ARRAY DB 12,34,56,-12,-34,-9,0,3,0,-5,3,5 DB 0AH,0FFH,4,0,77H,88H,0F0H,0BBH COUNT EQU $-ARRAY

SUM1 DW 0 ;存正数累加和

SUM2 DW 0 ;存负数绝对值累加和

CUNT1 DB 0 ;存正数数据个数

CUNT2 DB 0 ;存负数数据个数

DATA ENDS

STACK1 SEGMENT PARA STACK

STA DW 20H DUP(0)

STACK1 ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX,DATA

MOV DS,AX

XOR AX,AX

XOR BX,BX

XOR CX,CX

XOR DX,DX

LEA SI,ARRAY

MOV CL,COUNT LOP: TEST B YTE PTR [SI],80H

JE PLUS

MOV CH,[SI] ; 求负数绝对值NEG CH

ADD BL,CH ; 负数绝对值累加

ADC BH,0

INC DL ; 个数计数JMP NEXT

PLUS: ADD AL,[SI] ; 正数累加ADC AH,0

INC DH ; 个数计数NEXT: INC SI

DEC CL

JNE LOP

MOV SUM1,AX ; 存结果

MOV SUM2,BX

MOV CUNT1,DH

MOV CUNT2,DL

MOV AH,4CH

INT 21H

COSEG ENDS

END START

2、上机题目:两个八位数的相加运算

内容:DAT开始的单元中存放两个八位二进制数,两个数相加后结果存入SUM单元中。(SUM为十六位)DAT DB X1,X2 SUM DW ?

无符号数有符号数

data segment

dat db 0feh,05h

sum dw ?

data ends

code segment assume cs:code,ds:data start:mov ax,data

mov ds,ax

mov al,dat

xor ah,ah

add al,dat+1

adc ah,0

mov sum,ax code ends

end start data segment

dat db 0feh,05h

sum dw ?

data ends

code segment assume cs:code,ds:data start:mov ax,data

mov ds,ax

mov al,dat

cbw

mov bx,ax

mov al,dat+1

cbw

add ax,bx

mov sum,ax code ends

end start

1、上机题目:统计正数(负数)的个数

内容:DAT开始的单元中存放N个字节有符号数,统计正数的个数存入T0单元中;负数的个数存入T1单元中;

Dat DB X1,……,XN

T0 DB ?

T1 DB ?

data segment

dat db 12,23,-45,-82,91,64,0,-2,4,37 count equ $-dat

t0 db ?

t1 db ?

data ends

code s egment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov cx,count

mov si,0 lop: test dat[si],80h

je plus

inc t1 ; 个数计数jmp next

plus: inc t0 ; 个数计数next: inc si

dec cx

cmp cx,0

jne lop

mov ah,4ch

int 21h

code e nds

end start

2、上机题目:无符号数排序

内容:TAB开始的单元中存放N个字节无符号数,请按照从大到小排序后,存入DAB单元中。(选作:从小到大排序)

TAB DB X1,……,XN

DAB DB N DUP(?)

data segment

tab db 01h,10h,05h,60h,30h,11h n equ $-tab

dab db n dup(?)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov bx,0

mov cx,n

q:mov al,tab[bx]

mov dab[bx],al

inc bx

loop q

mov cx,n

dec cx

lop:

mov di,cx

mov bx,0

lop1: mov al,dab[bx] cmp al,dab[bx+1] jnb next

xchg al,dab[bx+1] mov dab[bx],al next: inc bx dec cx cmp cx,0 jnz lop1 mov cx,di dec cx cmp cx,0 jnz lop mov ah,4ch int 21h code ends end start

1、上机题目:求最大数(最小数)

内容:DAT开始的字单元中存放N个无符号数,求出最大数存入MAX单元中。

(求出最小数存入MIN单元中)

DAT DW X1,……,XN

MAX DW ?

MIN DW ?

data segment

dat dw 6,2,3,1,5,4,2 count equ ($-dat)/2 max dw ?

min dw ?

data ends

code segment assume cs:code,ds:data start: mov ax,data

mov ds,ax

mov cx,count-1

mov si,0 mov ax,dat[si]

mov bx,dat[si]

j0: add si,2

cmp ax,dat[si]

jnb j1

mov ax,dat[si]

j1: cmp dat[si],bx

jnb j2

mov bx,dat[si]

j2: loop j0

mov max,ax

mov min,bx

mov ah,4ch

int 21h

code ends

end start

相关文档
最新文档