汇编语言题目急!!!!!!!!!!!!!

汇编语言的题目,就是定义10个数据,找出其中的负数,给出代码,谢谢了,急!!!!!!!... 汇编语言的题目,就是定义10个数据,找出其中的负数,给出代码,谢谢了,急!!!!!!! 展开
 我来答
汤旺河边
2009-12-28 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2675
采纳率:0%
帮助的人:3196万
展开全部

; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。

Code   Segment

   Assume  CS:Code,DS:Code

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

; 功能:显示指定地址(Str_Addr)的字符串

; 入口:

; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr

; 用法举例:Output PromptStr

Output  MACRO Str_Addr

   lea  dx,Str_Addr

   mov  ah,9

   int  21h

   EndM

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

; 功能:在当前光标位置显示一个字符

; 入口:dl=要显示的字符 

Output_Chr  proc  Near 

   push  ax 

   mov   ah,02h 

   int   21h 

   pop   ax 

   ret 

Output_Chr  Endp 

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

; 功能:把AX中的二进制有符号数转换成显式的十进制ASCII码,并送显示屏显示

; 入口:AX=二进制数 

; 出口:在当前光标位置显示转换后的ASCII码数字 

Sign_Dec_ASCII Proc  Near 

   push  ds

   push  cs

   pop  ds

   push  cs

   pop  es

   push  dx 

   push  bx 

   push  di

   test  ah,80h

   jz  @@Tran_ASCII

   neg  ax

   push  ax

   mov  dl,'-'

   mov  ah,2

   int  21h

   pop  ax

@@Tran_ASCII: mov   bx,10 

   lea   di,@@Temp_SaveS[5] 

   mov   BYTE ptr [di],'$' 

   dec   di 

   cld 

@@Divide_S:  xor   dx,dx 

   div   bx 

   or   dl,30h 

   mov   [di],dl 

   dec   di 

   test  ax,0ffffh 

   jnz   @@Divide_S

   inc   di 

   push  di 

   pop   dx 

   mov   ah,9 

   int   21h 

   pop   di 

   pop   bx 

   pop   dx

   pop  ds

   ret 

@@Temp_SaveS  db   6 dup(?)

Sign_Dec_ASCII EndP

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

Buffer  db  98,-43,56,-67,123,-98,102,-87,-91,-100

Counter  equ  $-Buffer ;数据个数

Prompt_Str db  13,10,'The negatives: $' ;显示负数个数,提示信息

Press_Key   db     13,10,13,10,'The complated. Press any key to exit...$' 

Start:    push  cs

   pop  ds

   push  cs

   pop   es

   lea  si,Buffer ;取数组变量地址

   mov  cx,Counter ;元素个数

   cld

@@Statics: lodsb ;读入一个元素

   test  al,80h ;是否正数?

   jz  $+11 ;是

   cbw ;扩展为字

   call  Sign_Dec_ASCII ;把AX中的二进制有符号数转换成显式的十进制ASCII码,并送显示屏显示

   mov  dl,20h

   call  Output_Chr

   loop  @@Statics

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

Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序

   mov  ah,1

   int  21h

   mov  ah,4ch ;结束程序

   int  21h

Code   ENDS

   END   Start ;编译到此结束

_fmlyht
2009-12-28 · TA获得超过2359个赞
知道大有可为答主
回答量:2398
采纳率:0%
帮助的人:1981万
展开全部
data segment
num1 db 20,30,-5,40,-21,60,-109,8,12,14
num1 db dup(0)
data ends

code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov es,ax
lea si,num1
lea di,num2
mov cx,0AH
lab1: test [si],80h
jz lab2
movsb
jmp lab3
lab2: inc si
lab3: loop lab1
mov ax,4c00h
int 21h
code ends
end start
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式