主题:寻找懂汇编的人啊,急!不然我考试要挂了
wzhpro
[专家分:0] 发布于 2006-01-04 20:18:00
帮我做2道题,考试用的。。。。
1、编写程序计算1+3+....+19
注意,要用递加的方法,ADD AX,2 这种方法,ax和19比较,等于就退出循环,输出结果
2、查找给定的一段字符串(比如:ABcD)中的小写字母,并改成大写字母
用最简单的语句写,8086的
回复列表 (共6个回复)
沙发
erping [专家分:3660] 发布于 2006-01-05 11:55:00
;2006-1-5
;编写程序计算1+3+....+19
;注意,要用递加的方法,ADD AX,2 这种方法,ax和19比较,等于就退出循环,输出结果
.model tiny
.code
org 100H
_main:
xor cx, cx
mov ax, 1
@a:
add cx, ax
add ax, 2
cmp ax, 19
jle @a
mov ax, cx
mov cx, 10
call print
mov ax, 4C00H
int 21H
print proc ;提供多种进制的输出
;ax 存放要输出的数
;cx 存放进制形式 (2 <= 进制 <= 35)
cmp cx, 2
jl _error_
cmp cx, 35
ja _error_
push bx ;保存 bx
push dx ;...
sub sp, 16 ;16 (2 * 8)个字节的临时变量
mov bx, sp ;bx 指向变量地址
xor dx, dx
_loop:
cmp ax, 0
jne _next
cmp dx, 0
je _print
_next:
div cx
cmp dx, 9 ;比较余数是否大于 9
ja _than_nine
add dl, '0'
jmp _save_dl
_than_nine:
add dl, 'A' - 0AH ;大于 9 的数转换处理
_save_dl:
mov ss:[bx], dl
inc bx
cwd
jmp _loop
_print:
dec bx
_print_next:
cmp bx, sp
jl _end
mov dl, ss:[bx]
mov ah, 2
int 21H
dec bx
jmp _print_next
_error_:
xor ax, ax ;return false
ret
_end:
add sp, 16 ;恢复堆栈
pop dx
pop bx
mov ax, 1 ;return true
ret
print endp
end _main
板凳
erping [专家分:3660] 发布于 2006-01-05 11:56:00
;2006-1-5
;查找给定的一段字符串(比如:ABcD)中的小写字母,并改成大写字母
.model small
.data
test_data db 'Hello World!', '$'
test_data_length equ $ - test_data
.code
_main:
mov ax, @data
mov ds, ax
cld
mov si, offset test_data
mov cx, test_data_length
@1:
test cx, cx
jz @2
dec cx
lodsb
cmp al, 'a'
jb @1
cmp al, 'z'
ja @1
sub byte ptr [si - 1], 'a' - 'A'
jmp @1
@2:
mov dx, offset test_data
mov ah, 9
int 21H
mov ax, 4c00H
int 21H
end _main
3 楼
56726301 [专家分:0] 发布于 2006-01-10 14:32:00
他连感谢的话都没有啊
4 楼
wzhpro [专家分:0] 发布于 2006-01-11 14:46:00
来晚了,不好意思啊
谢谢erping了
5 楼
erping [专家分:3660] 发布于 2006-01-16 17:30:00
呵呵[em9]
6 楼
ntsxd [专家分:0] 发布于 2006-05-17 21:11:00
你要考试这还不会啊? 哈哈 可惜我也不会
我来回复