王爽《組合語言》課程設計一

2021-08-30 05:30:27 字數 4181 閱讀 3036

assume cs:code,ds:data

buf segment

db 0a0h dup (' '),0

buf ends

data segment

db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'

db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'

db '1995'

;以上表示21年的21個字串

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479

dd 140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000

dd 5937000

;以上表示21年公司總收入的21個dword型資料

dw 3,7,9,13,28,38,130,220,476,778

dw 1001,1442,2258,2793,4037,5635,8226,11542,14430,15257

dw 17800

;以上是表示21年公司雇員人數的21個word型資料

data ends

table segment

db 21 dup ('year summ ne ?? '),0

table ends

code segment

main:

mov ax,table

mov ds,ax

mov ax,data

mov es,ax

mov si,0

mov di,0

call copy

mov ax,buf

mov ds,ax

mov ax,table

mov es,ax

mov bl,2

mov cx,21

s2: mov ax,es:[di]

mov [si],ax

mov ax,es:[di+2]

mov [si+2],ax

mov al,es:[di+4]

mov [si+4],al

mov ax,es:[di+5]

mov dx,es:[di+7]

add si,5

call dtoc

mov ax,es:[di+10]

xor dx,dx

add si,11

call dtoc

mov ax,es:[di+13]

xor dx,dx

add si,6

call dtoc

xor si,si

mov dh,bl

mov dl,2

push cx

mov cl,2

add di,10h

call show_str

pop cx

inc bl

loop s2

mov ax,4c00h

int 21h

copy:

push ax

push bx

push cx

push dx

push si

push di

xor bx,bx

mov cx,21

s1: ;年份

mov ax,es:[bx+di]

mov [si],ax

mov ax,es:[bx+di].2

mov [si].2,ax

;總收入

mov ax,es:84[bx+di]

mov [si].5,ax

mov dx,es:84[bx+di].2

mov [si].7,dx

;平均收入

div word ptr es:168[di]

mov [si].13,ax

;人數mov ax,es:168[di]

mov [si].10,ax

xor al,al

;mov [si+0fh],al

add bx,2

add di,2

add si,10h

loop s1

pop di

pop si

pop dx

pop cx

pop bx

pop ax

ret;名稱: show_str

;功能: 在指定的位置,用指定的顏色,顯示乙個用0結尾的字串

;引數: (dh)=行號(取值範圍0-24),(dl)=列號(取值範圍0-79),(cl)=顏色

; ds:si指向字串的首位址

;返回: 無

show_str:

push ax

push bx

push cx

push dx

push es

push si

push di

mov ax,0b800h

mov es,ax

mov al,0a0h ;行長度

mul dh

mov bx,ax ;行位址

xor dh,dh

mov di,dx

add di,dx ;列位址

mov al,cl ;屬性

do: mov cl,[si]

mov ch,0

jcxz enddo

mov ch,al;屬性

mov es:[bx][di],cx

inc si

add di,2

jmp short do

enddo:

pop di

pop si

pop es

pop dx

pop cx

pop bx

pop ax

ret;名稱: dtoc

;功能: 將word型資料轉變為表示十進位制數的字串,字串以0為結尾符

;返回: 無

dtoc:

push ax

push cx

push dx

push si

push di

do1:

mov cx,10

call divdw

;(ax)=結果的低16位,(dx)=結果的高16位,(cx)=餘數

add cx,30h

mov [si],cl

inc si

mov cx,ax

or cx,dx

jcxz enddo1

jmp short do1

enddo1:

;mov byte ptr [si],0

mov bp,sp

mov di,[bp+2]

mov cx,si

sub cx,di

shr cx,1

jcxz s3

dec si

s: xchg dl,[si]

xchg dl,[di]

xchg dl,[si]

dec si

inc di

loop s

s3: pop di

pop si

pop dx

pop cx

pop ax

ret;名稱: divdw

;引數: (ax)=dword型資料的低16位,(dx)=dword型資料的高16位

; (cx)=除數

;返回: (ax)=結果的低16位,(dx)=結果的高16位

; (cx)=餘數

divdw:

push bp

mov bp,sp

sub bp,6

mov [bp],ax

mov [bp+2],dx

mov ax,[bp+2]

xor dx,dx

div cx

mov [bp+4],ax

mov ax,[bp]

div cx

mov cx,dx

mov dx,[bp+4]

pop bp

retcode ends

end main

王爽《組合語言》課程設計1

注 dtoc 1子程式較實驗十中dtoc有如下不同 1.運算元據範圍由0 ffffh變為0 ffffffffh 2.向ds si指向的字串寫入資料後不會新增數字0 方便後面 如下 assume cs codesg datasg segment db 1975 1976 1977 1978 1979 ...

組合語言 王爽

cpu有三條匯流排 位址 資料 控制線 位址匯流排確定儲存單元 控制匯流排傳送指令 資料匯流排 傳輸資料 cpu n個位址線 位址匯流排寬度為n 可以尋找2 n個記憶體單元 儲存單元 0開始編號,乙個儲存單元可以儲存乙個byte 8086cpu有16根位址線 1bit就是一根位址線 注意 儲存器以b...

組合語言 《組合語言》王爽 實驗一

從 1000 0 開始寫入命令 a 1000 0 mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx mov bx,ax add ax,bx mov ax,001a mov bx,0026 add al,bl add ah,bl add bh,al mov a...