8086系列(21) 作業6 9

2021-10-11 03:26:07 字數 2980 閱讀 7543

編寫乙個子程式巢狀結構的程式模組,分別從鍵盤輸入姓名及8個字元的**號碼,並以一定的格式顯示出來

主程式 telist:

(1) 顯示提示符input_name:

(2) 呼叫子程式input_name輸入姓名

(3) 顯示提示符input a telephone number:

(4) 呼叫子程式inphone輸入**號碼

(5) 呼叫子程式printline顯示姓名及**號碼

子程式input_name:

(1) 呼叫鍵盤輸入子程式getchar,把輸入的姓名存放在inbuf緩衝區中

(1) 把inbuf中的姓名移入輸出行outname

子程式inphone:

(1) 呼叫鍵盤輸入子程式getchar,把輸入8位**號碼存放在inbuf緩衝區中

(1) 把inbuf中的**號碼移入輸出行outphone

子程式 printline:

顯示姓名及**號碼:

name tel

** **

datasg segment

inbuf label byte ;接受**號碼輸入

maxplen db 9

actplen db ?

phone db 9 dup(?)

mess1 db 'input_name:','$'

mess2 db 'input a telephone number:','$'

mess3 db 13,10,'$'

mess4 db 'name',8 dup(' '),'tel',0dh,0ah,'$'

mess5 db ' ','$'

outname db 8 dup(' '),'$'

outphone db 8 dup(' '),'$'

datasg ends

;-------------

codesg segment

main proc far

assume ds:datasg,cs:codesg,es:datasg

start:

push ds

xor ax,ax

push ax

mov ax,datasg

mov ds,ax

mov es,ax

;------------

mov ah,09h ;顯示提示符mess1

lea dx,mess1

int 21h

call input_name

mov ah,09h ;顯示提示符mess2

lea dx,mess2

int 21h

call inphone

call printline

;------------

exit:

retmain endp

;-----------input_name------------

input_name proc near

call getchar

full: ;填充空白字元

mov bx,actplen

mov bh,0

mov cx,8

sub cx,bx

cmp cx,0

jz next

i20:

mov phone[bx],20h

inc bx

loop i20

next:

cldmov si,offset phone

mov di,offset outname

mov cx,8

rep movsb

retinput_name endp

;-----------------------------------

;-----------getchar-----------------

getchar proc near

mov ah,0ah ;呼叫0a號中斷輸入到緩衝區

lea dx,inbuf ;ds:dx 為緩衝區首位址

int 21h

mov ah,02h ;換行

mov dl,0ah

int 21h

retgetchar endp

;---------------------------------

;----------inphone----------------

inphone proc near

call getchar

cldmov si,offset phone

mov di,offset outphone

mov cx,8

rep movsb

retinphone endp

;---------------------------------

;--------printline----------------

printline proc near

mov ah,09h ;顯示提示符name tel

lea dx,mess4

int 21h

mov ah,09 ;顯示outname

lea dx,outname

int 21h

mov ah,09

lea dx,mess5

int 21h

mov ah,09 ;顯示outname

8086系列(19) 遞迴

將字串反序輸出 用bx儲存字串str的首位址,每次遞迴呼叫revers,當遇到 符時返回,在返回的途中輸出每個字元。datasg segment str db abcde datasg ends codesg segment main proc far assume cs codesg,ds dat...

8086系列(8) 邏輯尺

設有陣列x和y。x陣列中有x1,x10 y陣列中有y1,y10。試編制程式計算z1 x1 y1,z2 x2 y2,z3 x3 y3,z4 x4 y4,z5 x5 y5,z6 x6 y6,z7 x7 y7,z8 x8 y8,z9 x9 y9,z10 x10 y10,結果存入z陣列。對於這種問題可以使用...

8086系列(11) 氣泡排序改進

給乙個長度為n的陣列進行氣泡排序。datasg segment array dw 3,5,6,1,4,2,9,7,0,8 n dw 10 datasg ends codesg segment assume ds datasg,cs codesg,es datasg main proc far sta...