彙編程序題

判斷方程AX2+BX+C=0是否有實根。若有實根,則將字節變量TAG置1,否則置0。假設A、B、C均爲字節變量,數據範圍爲-128~127。

Data segment

   A db 7

   B db 8

   C db 6

   Tag db ?

Data ends

Code segment

   Assume ds:data,cs:code

Start:

Mov ax,data

Mov ds,ax

Mov al,b

Imul al;乘法指令,求出B2的值並放入AX中

Mov bx,ax

Mov al,a

Imul c

Mov cx,4

Imul cx

Cmp bx,ax

Jge yes

Mov tag ,0

Jmp done

Yes: mov tag,1

Done: mov ah,4ch

Int 21h

Code Ends

End start


設VARY中有一組8位的符號數,編程統計其中 正數、負數、零的個數,分別存 VM、VN、VK變量中。

stack segment para  stack

   dw  20H dup(0)

stack ends

data segment

   vary  db 23h,78h,56h,0abh,00h,0cdh,59h,14h,98h,0efh,00h,0c0h

cnt equ $-vary

vm  db ?

vn  db ?

vk db ?

data ends

code segment

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

start: mov ax,data

mov ds,ax

mov bx,0

mov dl,0

lea si,vary

mov cx,cnt

lop1:

cmp byte ptr[si],0

je zero

js lop2

inc bh

jmp  next

lop2:

inc bl

jmp next

    zero:

           inc dl

    next:

           inc si

loop lop1

mov vm,bh

mov vn,bl

mov vk,dl

mov ah,4ch

int 21h

code ends

end start


設在數據段中定義有三個變量X,Y,Z,其中X的值爲8,Y的值爲9,請利用算術移位指令編寫程序,計算出下式的值(假設乘積的結果只有低16位有效)。

DATA SEGMENT

    S DW (?)

DATA ENDS

CODE SEGMENT

     ASSUME CS:CODE,DS:DATA

START:

      MOV AX,DATA

      MOV DS,AX

      MOV CX,100

      MOV AX,0H

      MOV BX,1H

LOOP1:

      ADD AX,BX

      INC BX

      LOOP LOOP1          

      MOV S,AX

      MOV AH,4CH

      INT 21H

 CODE ENDS

      END START


編程實現: S=1+2+3+……+100  ,要求計算後的結果存放在變量S裏。

DATA SEGMENT

    S DW (?)

DATA ENDS

CODE SEGMENT

     ASSUME CS:CODE,DS:DATA

START:

      MOV AX,DATA

      MOV DS,AX

      MOV CX,100

      MOV AX,0H

      MOV BX,1H

LOOP1:

      ADD AX,BX

      INC BX

      LOOP LOOP1          

      MOV S,AX

      MOV AH,4CH

      INT 21H

 CODE ENDS

      END START


已知有兩個雙字長度的數DATA1和DATA2,要求用8086彙編語言編程實現兩數相加,並將結果存放在result中,採用高地址優先存儲結果(如1234H,5678H表示56781234H)。程序的數據段部分已給出,要求補充完整程序,實現上述要求的功能。

DATA SEGMENT

DATA1      DW          5311H,8A13H   ;表示數據8A135311H

DATA2      DW      4783H,9526H   ;表示數據95264783H

RESULT     DW     2 DUP(?)     ; 存放多字節加法的結果

DATA ENDS

 

CODE SEGMENT

  ASSUME CS:CODE,DS:DATA

START:

    MOV AX,DATA

    MOV DS,AX

    MOV AX,DATA1

    MOV DX,DATA12

    ADD AX,DATA2      ;低字部分相加

    ADC DX,DATA22  ;高字部分帶進位相加

    MOV RESULT,AX       ;存放低字部分相加結果

    MOV RESULT2,DX        ;存放高字部分相加結果  

CODE ENDS

  END START

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章